plugin eval --mocks off on macOS: "Keychain Not Found" dialogs on every agent run (10 per run with 8 HTTP MCP servers)

Status Open
Reported on v2.1.294
Maintainer reply None cached
Activity 0 comments · opened Oct 8, 2026

Claude Code 2.1.294, macOS (Darwin 27.0.0).

Steps: a plugin with HTTP MCP servers that need OAuth; claude plugin eval ./plugins/x --mocks off --trust-plugin --allow-tools Bash --runs 1.

Observed: every agent run raises the system dialog "Keychain Not Found — A keychain cannot be found to store <user>" (Cancel / Reset To Defaults). A plugin that declares 8 HTTP servers gets 10 dialogs per run, about 2 s apart; a minimal plugin with one such server and a one-turn case gets 1 per run. They steal focus and the default button is Reset To Defaults.

Log: security -> SecKeychainItemCreateFromContent -> MacOS error: -25307 -> authd loginKC:queryCreate (1 of 2) -> Caller dismissed 2 s later. The call is security -i with add-generic-password -U -a <user> -s "Claude Code-credentials-<hash>", made by the child claude -p, whose HOME is /private/tmp/e-XXXX/home. That directory has no login keychain, so macOS offers to create one.

With the default --mocks record: 0 dialogs.

Expected: no keychain write (or no UI) when the child's HOME has no login keychain.

Workaround: a security wrapper on PATH that stalls -i / add-generic-password when HOME is not the user's home directory and passes everything else to /usr/bin/security. Measured on the minimal plugin: 1 dialog without it, 0 with it, same case result.

View original on GitHub ↗