Skip to content

Commit 32a749f

Browse files
committed
fix: skip permissions on decider agent - allowlist is not honored in headless action
Five permission designs failed identically (runs ...814, ...112, and three earlier). The transcripts prove the .claude/settings.json allowlist is not consulted in claude-code-action's headless SDK mode: Write(.decision/**), Bash(mkdir:*), tee, install -d were ALL denied despite matching rules. The matcher isn't the problem - it isn't running. Stop tuning it. The decider agent has zero blast radius (reads git, writes gitignored .decision/), so --dangerously-skip-permissions is safe here and kills the entire denial class. All side effects remain in the plain-bash Publish step, which never had an agent in its path. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
1 parent f088ec7 commit 32a749f

1 file changed

Lines changed: 10 additions & 9 deletions

File tree

.github/workflows/fetch-claude-docs.yml

Lines changed: 10 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -54,17 +54,17 @@ jobs:
5454
git config --global user.name "claude-yolo[bot]"
5555
git config --global user.email "claude-yolo@lroole.com"
5656
57-
# The agent ONLY decides; it runs no publish side effects. Three
58-
# allowlist-based designs failed the same way (July 2026): agent-composed
59-
# commands with free-text args keep failing Bash prefix permission
60-
# matching (multi-line, quoting, injection heuristics) and get silently
61-
# denied. So: agent reads diffs and writes decision files; the
62-
# deterministic Publish step below does branch/commit/PR/merge/notify.
57+
# The agent ONLY decides; it runs no publish side effects. Five permission
58+
# allowlist designs failed the same way (July 2026): in this action's
59+
# headless SDK mode the .claude/settings.json allowlist is simply not
60+
# honored - even Write(.decision/**), mkdir, tee were all denied. So the
61+
# agent runs with permissions skipped, which is safe BECAUSE its blast
62+
# radius is nil: it reads git and writes a gitignored scratch dir, nothing
63+
# else. Every real side effect (branch/commit/push/PR/merge/notify) lives
64+
# in the deterministic Publish step below - plain bash, no agent.
6365
- name: Claude decides
6466
# Pinned: @main changed claude_args parsing in June 2026 and silently
65-
# broke 'Bash(gh pr:*)' (split on the space into two invalid rules)
66-
# -> 3 weeks of pushed branches with no PRs. Tool permissions live
67-
# in .claude/settings.json, which survives arg-parsing changes.
67+
# broke 'Bash(gh pr:*)' -> 3 weeks of pushed branches with no PRs.
6868
uses: anthropics/claude-code-action@v1.0.168
6969
env:
7070
GITHUB_TOKEN: ${{ steps.app-token.outputs.token }}
@@ -75,6 +75,7 @@ jobs:
7575
show_full_output: true
7676
claude_args: |
7777
--model claude-sonnet-4-6
78+
--dangerously-skip-permissions
7879
prompt: |
7980
You're an AI agent responsible for evaluating Anthropic documentation updates. Think like a news editor - you decide what's worth publishing.
8081

0 commit comments

Comments
 (0)