Claude in Chrome form_input denied by the auto-mode classifier in bypassPermissions (2.1.272): the "add a Bash permission rule" hint is still wrong, and a documented autoMode.allow rule is labelled [Auto-Mode Bypass]
Summary
Follow-up to #86451 (auto-closed for inactivity on 2026-09-14). There, @bcherny confirmed the behavior is intended but undocumented ("Claude in Chrome browser tools are deliberately held to auto mode's classifier review even in bypassPermissions") and named two gaps being tracked from that issue: the permission-modes docs omit this exception, and the denial "is a dead end with no in-CLI approval path, and the 'add a Bash permission rule' hint is wrong for MCP tool calls."
On 2.1.272 (Windows) both gaps are still present, and two new things showed up:
- The suggested workaround (an explicit per-tool allow rule, "resolved before the classifier runs") did not clear a site-targeting
form_input, consistent with @dondetir's correction on #86451 that site-targeting browser actions are gated regardless of allow rules. - The
autoMode.allowcustomization documented in the settings schema, when used to state that the user had authorized the action, changed the denial reason to[Auto-Mode Bypass], i.e. the documented customization was itself read as a bypass attempt.
Environment
- Claude Code 2.1.272, Windows 11 Home (10.0.26200), PowerShell host
- Claude in Chrome extension (
mcp__claude-in-chrome__*tools) - Launched as
claude --permission-mode bypassPermissions(verified on the process command line and in the transcript'spermissionModefields, allbypassPermissions) .claude/settings.local.json:permissions.defaultMode: "bypassPermissions"; no managed settings
Steps to reproduce
- Session in
bypassPermissionswith the Claude in Chrome tools loaded. - Navigate to a public event sign-up page (Framer site, modal form: first name, last name, email, city, LinkedIn, Google Scholar, two short free-text fields).
navigate,find,read_page, and theleft_clickon "Sign Up" all succeed. - The user asks Claude, in chat, to fill the form with the user's own name and email.
- Claude calls
form_inputon the first-name field.
Actual
Permission for this action was denied by the Claude Code auto mode classifier.
Reason: Blocked by classifier. [...] To allow this type of action in the future,
the user can add a Bash permission rule to their settings.
At the user's request, .claude/settings.local.json was then changed (live, no restart) and the call retried:
permissions.allow+=mcp__claude-in-chrome__form_input,mcp__claude-in-chrome__computer,mcp__claude-in-chrome__navigate,mcp__claude-in-chrome__browser_batchautoMode.allow: ["$defaults", "<rule stating the user has authorized entering her own contact details into a web form via the Chrome tools when asked in chat>"]
Retry:
Permission for this action was denied by the Claude Code auto mode classifier.
Reason: [Auto-Mode Bypass]. [...] To allow this type of action in the future,
the user can add a Bash permission rule to their settings.
(Caveat: the allow rules were added mid-session; the settings watcher was active for that directory, but I did not restart the CLI before the retry.)
Expected
Any of:
- The denial message should not point to a Bash permission rule for an MCP browser tool, and should not imply a settings rule will allow the action when none does for this class.
- If site-targeting browser input is classified regardless of mode by design, say so in the message and in the permission-modes docs (the doc gap acknowledged on #86451).
- An
autoMode.allowrule should either be honored or rejected with a message that says the customization is not honored for browser tools; labelling the documented customization a bypass attempt is confusing. - Some in-CLI approval path for the user who is present and has already consented in chat.
Impact
The user consented explicitly in chat, the data was her own (name, email, city), and there is no consent channel the classifier can see. The error promises a remedy that does not exist for this action class, and following the documented settings customization produces a worse-sounding denial. Net effect: the product cannot fill a sign-up form on the user's behalf even when asked, and the guidance it gives for fixing that is wrong. Both make the browser integration materially less useful than it presents itself to be, and the error text misleading.
Showing cached comments. Read the full discussion on GitHub ↗
3 Comments
The confusing part seems to be mixing three separate decisions: whether the tool may observe a page, whether it may take over a specific input, and whether it may submit a consequential external form.
bypassPermissionsshould not silently collapse those into an allow-all switch, but the denial should identify the action class and the real next step.For site-targeting input, I would make the approval contract explicit: bind the request to the current origin, tab/document generation, exact field fingerprint and a declared data class; show the field target and value scope in an in-CLI approval surface; then independently read back the field value before any submit-capable action. If the product intentionally requires human approval for this class, say
human_approval_requiredrather than suggesting a Bash rule that cannot apply. IfautoMode.allowis not honored for browser input, reject or document that rule at configuration time instead of relabeling it as a bypass attempt.Fixtures should distinguish observation allowed/input denied, input approved but navigation drifted, input succeeded with submit blocked, disconnect-after-input and submit-after-independent-readback. Preserve
unknownafter a possible write and never replay automatically. I maintain Hronaut, a local visible Browser/MCP workspace, and this is the same authority boundary I care about; this is not a Claude Code compatibility claim. Disclosure: AI-assisted.Same here with Claude Code in the desktop app on macOS (CLI 2.1.281) and Claude in Chrome.
My use case: Claude fills in job application forms (Ashby, Workable, join.com) in my own Chrome, and I review them and click submit myself. The very first extension call (tabs_context_mcp with createIfEmpty) was denied as [Real-World Transactions]. Earlier the same day, pre-filling was denied as [Auto-Mode Bypass], also after I switched the session to bypassPermissions and added mcp__claude-in-chrome to permissions.allow.
Until mid-September this workflow ran through the extension without problems. I'd like a way to approve such browser actions myself, for example with a permission prompt, instead of a denial that no setting can clear.
Same behavior on macOS in the Claude desktop app (Code tab), Claude Code 2.1.284, model Opus 5.5. The session was in
bypassPermissionsthe whole time, which I confirmed from the session metadata and from everypermissionModefield in the transcript.What happened:
mcp__claude-in-chrome__javascript_toolwere denied withReason: [Modify Shared Resources]. The scripts ran in a tab where I'm signed in to my own company's web app, and they updated records through that app's own API as an admin of the account, at my request.permissions.allowalready includesmcp__claude-in-chrome__*, and the denial message still suggests adding a Bash permission rule./permissionsdialog and no in-chat approval prompt, so I had no way to approve the action from the app.Two asks, in line with this issue:
bypassPermissions. That page currently says bypass mode disables safety checks, which is why I expected these calls to run.