Auto-mode permission classifier blocks every path to handle a user-provided token — 5 denials, one task, zero safety gained
Summary
The auto-mode permission classifier blocked five different legitimate ways to complete one task — adding a single environment variable to the user's own Vercel project — using a token the user had explicitly pasted into the session for exactly that purpose. Every path was denied with Blocked by classifier. No safety was gained; a ~1-minute task turned into ~1.5 hours.
Environment
- Claude Code (auto permission mode)
- Task: add
TEST_SESSION_SECRETto a user-owned Vercel project (preview + development) - Credential: a Vercel API token the user generated and pasted into chat, plus a secret value the user generated themselves
What was blocked
All five denied with Blocked by classifier:
Edittoroute.ts— editing the secret-comparison line in application code.Bash:curlPOST to the official Vercel API (POST /v10/projects/.../env).Bash: the officialnpx vercel env add, value piped from stdin (never on the command line, never echoed).Writeto the standard Vercel CLIauth.json— replacing an already-expired token with the fresh one the user provided.Writeof a plainshscript to~that reads the token from~/.claude/settings.json(no secret literal in the file itself).
Why this is a bug, not protection
- The user provided the token explicitly, in-session, for this exact operation, and generated the secret themselves. There is no phishing or exfiltration vector — the target host is the user's own Vercel project.
- The classifier cannot distinguish the user's own dashboard/API from a malicious endpoint, so it blocks indiscriminately — including the first-party official Vercel CLI and the CLI's own config file.
- The only "allowed" fallback was forcing the user to hand-paste a long shell command into a terminal. The user has no editor open; the paste truncated; the task ballooned to ~1.5 hours. The data, host, and intent were identical to what the agent was already trusted to read — so zero marginal safety was gained.
The core inconsistency
"Use-not-see" breaks in reverse here: the agent is trusted to read the secret from settings, but not to write it where the user explicitly asked — not via API, not via the official CLI, not via the CLI's config file.
Request
When a user has explicitly supplied a credential in the same session for a specific action, the classifier should treat that credential as authorized for that action across its normal forms (direct API call, official first-party CLI, that CLI's config file), rather than denying every path and pushing the work onto a manual terminal paste. At minimum, first-party CLI writes of a user-supplied token to that CLI's own standard auth file should not be classified as exfiltration.