Repository navigation
New 2.91.0 cask version is being flagged by macOS Gatekeeper #34192
Description
Describe the bug
macOS v26.7.1
Latest homebrew
Updated to azure-cli v2.91.0 this morning.
Since the update, every .so file found under /opt/homebrew/Caskroom/azure-cli/2.91.0/libexec/lib/python3.14/site-packages/ is being flagged by macOS Gatekeeper. I am unable to clear the . I was able to get around this by running com.apple.provenance and com.apple.quarantine flags with sudo xattr on the directory or files directlysudo xattr -d com.apple.quarantine $(find /opt/homebrew/Caskroom/azure-cli/2.91.0/ -name "*.so") but this seems a bit inadvisable for regular users. This is interfering massively with management of our corporate AKS clusters with tools like k9s.
I am also unable to allow these files via System Settings > Privacy & Security. I allow them as each error appears, but the next time az is run they are flagged again, and I'm not sure allowing them is even actually allowing them.
Apologies if this report is a bit scarce, I don't usually do this and not sure what other info you may need to help.
Related command
Any az or other apps that would call az (such as k9s when attaching to AKS clusters)
Errors
The standard macOS popup about not allowing user to open files as it hasn't been deemed safe by Apple.
Issue script & Debug output
Not sure how I can output script as it's macOS interfering.
Expected behavior
To not have files quarantined.
Environment Summary
az --version
azure-cli 2.91.0
core 2.91.0
telemetry 1.1.0
Extensions:
alb 2.0.1
Dependencies:
msal 1.39.0
azure-mgmt-resource 24.0.0
Python location '/opt/homebrew/opt/python@3.14/bin/python3.14'
Config directory '/Users/user/.azure'
Extensions directory '/Users/user/.azure/cliextensions'
Python (Darwin) 3.14.8 (main, Sep 30 2026, 17:55:09) [Clang 21.0.0 (clang-2100.3.34.2)]
Legal docs and information: aka.ms/AzureCliLegal
Your CLI is up-to-date.
Additional context
No response
Activity
yonzhan commentedon Oct 8, 2026
Thank you for opening this issue, we will look into it.
Abdul-Karim-Baisuev commentedon Oct 8, 2026
x-engineering-agent commentedon Oct 8, 2026
Bug Analysis
Affected area: macOS distribution and Homebrew cask packaging in
Azure/azure-cli, not an AKS command implementation or the installedalbextension.Reported behavior: After upgrading to Azure CLI 2.91.0 on macOS 26.7.1, Gatekeeper repeatedly rejects native
.sofiles inside the cask's Python 3.14 environment. The reporter supplied the CLI/Python versions, installation paths, the recurring OS dialog, and the resulting impact on applications that invokeaz. This is sufficient to investigate the packaging/launch path; the report has not been independently reproduced and the signing/notarization cause is not yet established.Implementation requirements:
devand inspect the macOS artifact assembly, signing/notarization, and Homebrew distribution paths, including repository-owned release/CI scripts. Compare the affected cask with its last working distribution before choosing a source change.PR title & description format (required)
This repo enforces a PR format (guide). Please author the PR exactly as follows or CI's Check the Format of Pull Request Title and Content will fail.
Use this EXACT PR title (copy verbatim, do not reword):
Keep the backticks around the command and the
Fix #34192:prefix. You may only adjust the wording after the command (the final summary) if the fix changes; the[Packaging]prefix, issue link, and backticked command must stay.Description — follow the PR template and fill in:
Fixes #34192.az ...command this affects.[Packaging] `az <command>`: <note>.Posted by x-engineering-agent (Fixer)
x-engineering-agent commentedon Oct 8, 2026
Implementation Result
No pull request was opened because the implementation run completed without a validated code change.
The source analysis remains available above. A maintainer should confirm whether the issue is already resolved on the current target branch or provide the reproduction or root-cause evidence needed for another implementation request.
Posted by x-engineering-agent (Fixer)
naga-nandyala commentedon Oct 8, 2026
Hi squerble,
TL;DR: All native binaries inside the Homebrew Cask archive are signed by Microsoft and notarized by Apple. We could not reproduce the Gatekeeper warnings with a clean installation, so could you please try the steps below and let us know the results?
Thank you for reporting this. We verified the published Azure CLI 2.91.0 ARM64 macOS artifact independently.
We downloaded the release archive directly with
curl:We then extracted that archive, inventoried every Mach-O object, and verified each object with Apple's
codesigntooling. All 12 native.so/.dylibobjects passed strict signature verification. Each object was valid on disk, satisfied its designated requirement, included hardened runtime and a secure timestamp, and reported the Microsoft Developer ID certificate chain. Representative details were:We also checked the final extracted objects against Apple's online notarization requirement:
Every object returned the following successful result:
The aggregate result across all 12 objects was:
The Apple Root CA entry above demonstrates the signing certificate chain. The separate
=notarizedrequirement check andexplicit requirement satisfiedresult demonstrate that Apple's notarization service recognizes the final code object. Together, these establish that the release archive contains valid Microsoft-signed and Apple-notarized native code.One important distinction is that Homebrew Cask intentionally applies
com.apple.quarantineto downloaded and installed files. A signed and notarized file can therefore still carry the quarantine attribute. The expected behavior is that Gatekeeper assesses and permits the signed/notarized code; the expected behavior is not that the quarantine attribute is absent.We also tested a clean Homebrew installation after removing the cached 2.91.0 cask archive and forcing a fresh download. All 12 installed native objects retained
com.apple.quarantine. With quarantine still present,az versionsucceeded and all representative native modules loaded without a Gatekeeper dialog. The macOS policy log recordedGK evaluateScanResult: 1for all 12 Azure CLI native objects, identified them with Microsoft team IDUBF8T346G9, and cleared their Gatekeeper denial breadcrumbs.Because quarantine was manually removed from files in the current installation, could you please perform one clean reinstall so we can test the original state? The following does not use
--zap, so it should preserve~/.azureand installed Azure CLI extensions.First, please capture the exact environment:
Please run these commands in order:
Please do not run
azyet. First capture the installation and quarantine state:Then run the first launch test:
Next, force the representative native modules to load:
Finally, retry the original
k9s/AKS operation that produced the dialogs.For each of these tests, please let us know whether a Gatekeeper dialog appears. If it does, please record which command triggered it and the exact file path shown in the dialog, then run the following with that path:
Please attach these two files:
It would also help to know whether the Mac is MDM-managed and whether the test was performed behind a VPN, proxy, TLS-inspection service, DNS/security filter, or endpoint-security product. Standalone
.sofiles rely on Apple's online notarization-ticket lookup during assessment, so blocked or intercepted access to Apple's trust services can produce a machine- or network-specific failure even when the artifact bytes and signatures are valid.Please do not remove
com.apple.quarantine, usebrew install --no-quarantine, disable Gatekeeper, or usebrew uninstall --zapduring this test, because those actions would remove the state needed to diagnose the failure.squerble commentedon Oct 8, 2026
Thank you Naga Nandyala (@naga-nandyala) .
First three environment capture commands:
Clean install instructions followed and first temp file generated.
azure-cli-xattrs-before-first-run.txt
Results
Running
az versionGatekeeper immediately popped up:
Not specfic path given but:
Ran your script against the matching filename (I did attach file but looks to have corrupted. Output below).
The same Gatekeeper dialog popped up again for the same file, but then
az versionwas able to complete:This particular Mac is indeed MDM-managed via JAMF, is currently connected to the corporate VPN (Cisco GlobalProtect) including TLS inspection. No DNS filter but runs Sophos Endpoint Protection.
Would it be worth me having a temporary VPN exception granted and running the same steps above with the VPN fully disconnected and running only on my home's ISP connection?
squerble commentedon Oct 8, 2026
I went ahead and tried it with VPN disabled. No issues at all, all commands working without triggering any Gatekeeper warnings.
Outputs of the two log files from the scripts:
and
EDIT: At this point, I assume it would be worth closing this ticket as this is clearly an issue caused by my job's VPN and so this will have to be looked at on their side. I apologise for taking up time.
naga-nandyala commentedon Oct 8, 2026
Thanks for confirmation