[Bug] Auto mode classifier returns no verdict for project-local write operations

Status Open
Reported on v2.1.278
Maintainer reply None cached
Activity 5 comments · opened Sep 22, 2026

Bug Description

Claude Code 2.1.278 on macOS, using a Claude Pro login.

/status reports:

Auto mode server: Enabled

Normal project-local Write operations repeatedly fail with:

The server-side auto mode classifier gave no verdict (it skipped this action), so auto mode cannot determine the safety of Write.

The issue reproduces across fresh Claude Code sessions and across different
ordinary project-local targets, including both documentation and source files:

  • claude-platform/docs/general_platform_block_d_v1.md
  • claude-platform/lib/repo_intel.py
  • claude-platform/docs/repo_intelligence_recipes.md

Read-only operations continue to work normally.

claude auto-mode config shows that local file operations within project scope
are allowed, the current repository is trusted, and there is no apparent policy
rule that explains these writes being blocked.

The issue also persists after starting fresh sessions.

After identifying the problem, I did not use Bash, heredocs, Python, or another
write mechanism to bypass the failed classifier decision.

Expected behavior

The server-side auto mode classifier returns an allow or deny verdict for
ordinary project-local Write operations.

Actual behavior

The classifier repeatedly produces no verdict, causing Auto mode to fail closed
and preventing ordinary file writes.

This is not shown as an ordinary classifier denial with a policy reason.

Environment

  • Platform: macOS / Darwin
  • Terminal: Apple Terminal
  • Claude Code: 2.1.278
  • Login: Claude Pro
  • Auto mode server: Enabled
  • Feedback ID: 2d4845ff-cdde-4235-b282-7a120ea0a7d4

View original on GitHub ↗

3 Comments

st52542 · 22 days ago

Claude Code 2.1.220
full plugin
→ project-local Write PASS

Claude Code 2.1.278
same full plugin
→ Write NO VERDICT

2.1.278
same plugin, only hooks/hooks.json description shortened
→ Write PASS

Additional isolation:

  • plugin.json only → PASS
  • skills only → PASS
  • hooks only → PASS
  • full plugin minus either of two different skills → PASS
  • --setting-sources project → still FAIL
  • disableAllHooks=true with full plugin → still FAIL
st52542 · 22 days ago

Claude Code 2.1.278, server-side Auto mode.

Same repo/plugin:

  • simple fresh sessions: 5/5 Write+Edit PASS
  • full compatibility probes and L8: PASS
  • fresh sessions containing detailed discussion of Auto-mode classifier,

permission/bypass behavior and prior classifier failures:
first ordinary Edit can return NO VERDICT

The error explicitly says the server-side classifier skipped the action
and retrying will not change it.

This remains after fixing a separate local oversized-plugin-metadata defect.

st52542 · 22 days ago

Update: I now have a deterministic reproducer and a minimized boundary.

Environment:

  • Claude Code 2.1.278
  • interactive CLI / PTY session
  • Auto permission mode

The failure requires all three conditions together:

  1. A plugin is loaded with --plugin-dir from a directory inside the session cwd.
  2. The session is interactive (the equivalent claude -p path does not reproduce).
  3. Write/Edit targets a file inside that loaded plugin directory.

Result:

  • Original in-place topology: 3/3 fresh trials -> NO_VERDICT
  • Historical minimized reproducer: 11/11 -> NO_VERDICT
  • User-visible result:

"The server-side auto mode classifier gave no verdict..."

  • Debug/status evidence:

"Classifier unavailable"

One-variable controls pass:

  • same interactive workload, target outside the loaded plugin root -> PASS
  • same workload, plugin loaded from a copy outside cwd -> PASS
  • non-interactive claude -p path -> PASS

A manifest-only plugin is sufficient to reproduce, so hooks, skills and plugin
metadata size are not required for the failure.

The client treats files inside the loaded plugin root as sensitive; those
mutations reach the Auto classifier instead of the normal in-cwd auto-accept
path. For the failing interactive topology the classifier is unavailable /
skips the action and the client correctly fails closed.

I implemented a local structural workaround:
when self-developing the plugin, load an immutable plugin snapshot from outside
the project cwd while continuing to edit the original source tree.

Using the same interactive reproducer, same Auto mode, same cwd, same prompt
and same source mutation target, changing only the loaded-plugin topology:

  • in-place loaded plugin: 3/3 NO_VERDICT
  • external loaded snapshot: 10/10 PASS
  • additional post-hardening validation: 3/3 PASS

The local workaround avoids the failing topology but does not fix the underlying
Claude Code/server-side classifier behavior. The original reproducer still fails.

I can provide a sanitized stdlib-only minimal reproducer if useful.

Showing cached comments. Read the full discussion on GitHub ↗