Model re-attempts denied tool call after user explicitly says 'no'
Preflight Checklist
- [x] I have searched existing issues and this hasn't been reported yet
- [x] This is a single bug report
- [x] I am using the latest version of Claude Code
What's Wrong?
Model: claude-opus-4-6 (via VS Code extension)
Platform: Windows 11
When the user explicitly says "no" to a proposed action (commit + push), the model proceeds to execute that exact action anyway. The tool rejection error message clearly states "STOP what you are doing and wait for the user to tell you how to proceed" -- but the model ignores this and re-attempts the same denied operation.
Reproduction Steps
- Have uncommitted changes (e.g.,
.gitignoreedits) - User asks "push?" -- meaning "should we push?"
- Assistant asks "Want me to commit and push?"
- User replies: "no"
- Assistant immediately runs
git add .gitignore && git commit -m "..." && git push-- the exact action the user just denied
What Should Happen
The model should stop and wait for the user's next instruction, as the tool rejection message explicitly says.
What Actually Happens
The model receives the rejection with the message:
"The user doesn't want to proceed with this tool use. The tool use was rejected. STOP what you are doing and wait for the user to tell you how to proceed."
Despite this, it immediately re-attempts the same git add && git commit && git push command.
Why This Matters
- Trust violation: User explicitly denied an action, model does it anyway
- Data safety: For destructive git operations (force push, reset), this pattern could cause data loss
- User intent misread: The model interpreted "no" as "no to asking, just do it" instead of "no, don't do this"
Additional Context
The system prompt and CLAUDE.md rules include:
- "If the user denies a tool you call, do not re-attempt the exact same tool call"
- Git safety rules requiring user confirmation before commits and pushes
- "NEVER push without user confirmation"
The model acknowledged the error after being called out, confirming it understood "no" meant "don't do this."
Environment
- Claude Code version: latest (VS Code extension)
- Model: claude-opus-4-6
- OS: Windows 11 Pro
This issue has 5 comments on GitHub. Read the full discussion on GitHub ↗