Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions apps/server/src/provider/providerMaintenance.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -321,11 +321,11 @@ it.layer(NodeServices.layer)("providerMaintenance", (it) => {
provider: driver("packageTool"),
packageName: "@example/package-tool",
update: {
command: "brew upgrade package-tool",
command: "brew upgrade --no-quarantine package-tool",

executable: "brew",

args: ["upgrade", "package-tool"],
args: ["upgrade", "--no-quarantine", "package-tool"],

lockKey: "homebrew",
},
Expand Down Expand Up @@ -418,11 +418,11 @@ it.layer(NodeServices.layer)("providerMaintenance", (it) => {
provider: driver("nativePackageTool"),
packageName: "@example/native-package-tool",
update: {
command: "brew upgrade native-package-tool",
command: "brew upgrade --no-quarantine native-package-tool",

executable: "brew",

args: ["upgrade", "native-package-tool"],
args: ["upgrade", "--no-quarantine", "native-package-tool"],

lockKey: "homebrew",
},
Expand All @@ -441,11 +441,11 @@ it.layer(NodeServices.layer)("providerMaintenance", (it) => {
provider: driver("scopedPackageTool"),
packageName: "@example/scoped-package-tool",
update: {
command: "brew upgrade example/tap/scoped-package-tool",
command: "brew upgrade --no-quarantine example/tap/scoped-package-tool",

executable: "brew",

args: ["upgrade", "example/tap/scoped-package-tool"],
args: ["upgrade", "--no-quarantine", "example/tap/scoped-package-tool"],

lockKey: "homebrew",
},
Expand Down
6 changes: 5 additions & 1 deletion apps/server/src/provider/providerMaintenance.ts
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,11 @@ function makeHomebrewProviderMaintenanceCapabilities(
provider: definition.provider,
packageName: definition.npmPackageName,
updateExecutable: "brew",
updateArgs: ["upgrade", definition.homebrewFormula],
// Cask upgrades quarantine the new binary by default. macOS then blocks
// the next exec behind a Gatekeeper approval prompt, which the T3 server
// cannot answer, so the provider probe hangs until a human approves the
// binary. --no-quarantine skips that and is a no-op for formulae.
updateArgs: ["upgrade", "--no-quarantine", definition.homebrewFormula],

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Removed brew flag breaks updates

High Severity

--no-quarantine was disabled in Homebrew 5.1.0 and fully removed in July 2026, so current brew upgrade rejects it with an invalid/unknown-option error. providerMaintenanceRunner treats any non-zero exit as a failed update, so one-click Homebrew updates for Codex (and other brew-routed providers) fail instead of fixing the Gatekeeper wedge.

Fix in Cursor Fix in Web

Reviewed by Cursor Bugbot for commit 3c736e4. Configure here.

updateLockKey: "homebrew",
});
}
Expand Down
Loading