Auto-mode classifier blocks gh pr merge, gh pr ready, and Jira transitions regardless of permissions or explicit user instructions
Auto-mode classifier blocks gh pr merge, gh pr ready, and Jira transitions regardless of permissions or explicit user instructions
Summary
The auto-mode classifier blocks standard PR workflow commands (gh pr ready, gh pr merge) and MCP tool calls (Jira transitions) regardless of:
- Explicit
Bash(*)permission in settings - Specific
gh *permission rules in settings - "Always allow" selections during the session
- The user explicitly asking for the merge after repeated blocks
- A skill (
/ready-merge) whose sole purpose is to run these exact commands
This happens across all models (Opus 4.6, Sonnet, etc.), not a model-specific issue. It happens every session, on every ticket. "Always allow" permissions are added to settings, then ignored — sometimes in the same session, sometimes in the next.
The core problem
The classifier treats gh pr merge as a dangerous action and blocks it. But merging PRs is how code gets into repositories that use pull requests. Blocking this is blocking the most fundamental part of the development workflow.
When the user invokes /ready-merge — a skill that says "mark the PR ready, wait for CI, merge it" — and then the classifier blocks every single step, the tool is actively working against the user. When the user then manually approves, and the classifier blocks again on retry, and the user approves again, and it blocks a third time — the tool has become an obstacle, not an assistant.
Permission configuration (all ignored)
.claude/settings.local.json (project-level):
{
"permissions": {
"allow": [
"Bash(*)",
"mcp__claude_ai_Atlassian__*",
"mcp__atlassian__*"
]
}
}
Adding specific rules like Bash(gh pr ready:*), Bash(gh pr merge:*) to settings — also ignored. Selecting "Always allow" when prompted — added to settings, then ignored in the same or next session.
What happens in practice (real session, today)
The user invokes /ready-merge on PR #247. This is a 3-step skill:
| Step | Command | Result |
|------|---------|--------|
| 1 | gh pr ready 247 | Blocked. Retried exact same command → allowed |
| 2 | gh pr merge 247 --squash --delete-branch | Blocked. Tried command gh pr merge ... → blocked again. Tried /usr/bin/env gh pr merge ... → allowed |
| 3 | mcp__atlassian__transitionJiraIssue (via Skill) | Blocked. Fell back to curl with REST API → allowed |
Three blocks on a three-step workflow. The user had to intervene for every step. This defeats the entire purpose of having a skill, having auto-mode, and having permissions.
Why the workarounds prove this is a bug
- The exact same command is blocked, then allowed on retry with no changes to permissions or context
gh pr mergeis blocked but/usr/bin/env gh pr mergeis allowed — same command, same effect, same permissions- "Always allow" selections don't persist or are ignored by the classifier
- This is not the permission system working as designed — the permission system says allow, the classifier says deny
This is not a one-off
This happens on every ticket, across multiple models, across sessions. The user has reported this repeatedly. Each time the classifier blocks a merge, the user has to manually intervene multiple times to complete a workflow that should be fully automated.
Expected behavior
Bash(*)means all Bash commands are allowed. The classifier should not override explicit permission grants.- "Always allow" should mean always allow. If the user approves a command and selects "always allow", it should never be blocked again.
- User instructions override the classifier. When the user explicitly says "merge this PR" or invokes a skill that says "merge this PR", the classifier should not block
gh pr merge. The user's intent is unambiguous. - Skills should be trusted. If a skill instructs specific commands, those commands should execute without classifier interference. The user chose to invoke the skill.
Impact
This makes Claude Code unreliable for any workflow involving PRs, deployments, or external service interactions. The user cannot trust that a multi-step workflow will complete without manual intervention at every step. For a tool positioned as a productivity multiplier, repeatedly blocking the user from doing the most basic development operation — merging their own code — is a serious problem.
This issue has 1 comment on GitHub. Read the full discussion on GitHub ↗