PaPoo
cover

Permission for this action was denied by the Claude Code auto mode classifier が出るのに、実際は通っていることがある

この症状は、Claude Code が操作を拒否したように見せながら、後で確認すると実際には処理が進んでいた、という形で報告されています。特に #87831 では、gh pr merge を含む一括処理でその挙動が繰り返し起きたとされています。報告者は、gh pr view --json state,mergedAt を見るとマージ済みになっていたケースがあった一方、別の大きなバッチでは本当に実行されていなかったケースもあったと書いています。つまり、このエラー文だけでは「止まった」のか「止まったように見えただけで実行された」のかを判別できません。

まず自分のケースかどうかを切り分けるなら、エラーが出た直後に対象の状態を別コマンドで見に行く必要があります。gh pr merge を含む作業なら、少なくとも gh pr view --json state,mergedAt のように結果を確認して、実際に反映済みかどうかを確かめる、というのが issue から読み取れる現実的な対処です。blocked 系の表示をそのまま信じると危ない、というのが #87831 の要点です。

もう一つ、見た目が似ているが少し違う報告として #89911 があります。こちらは、/fork だけの問題ではなく、--inherit-permission-mode が受け付けられても効いていないように見える、という報告です。コメントには、セッションが permissions.defaultMode に落ちてしまい、そこで auto になっていた、という説明がありました。つまり、もともとのモードを保つつもりだったのに、別の既定値へ落ちる経路がある、という話です。ただし、これはコメントで示された診断であり、本文だけからすべてを断定はできません。

実際に取得できた環境情報では、関連する設定ファイルは見つかっていませんでした。これは少なくとも、今回の検証環境ではローカルの settings.json を直接読む前提では話を進められないことを意味します。

[settings_structure]
~/.claude/settings.json: (存在しない)
/mnt/vda5/git/papoo/newsbot_openai/.claude/settings.json: (存在しない)
/mnt/vda5/git/papoo/newsbot_openai/.claude/settings.local.json: (存在しない)

このため、手元で再現するときは「設定ファイルに何か書いてあるはず」と決め打ちしないほうがよさそうです。少なくともこの出力だけから言えるのは、該当パスに設定ファイルがなかったこと、そして問題の中心は設定値そのものよりも、拒否表示と実際の実行結果が一致しない点にある、ということです。

現時点で言えるのはここまでです。Permission for this action was denied by the Claude Code auto mode classifier は、拒否の確定メッセージとしては信用しきれない。#87831 では「実は実行済み」があり、#89911 ではモードが意図せず auto 側へ落ちる話が出ています。どちらのケースでも、表示だけで判断せず、対象の状態を別途確認する必要があります。


検証環境

OS          : Linux 3.10.0-1160.76.1.el7.x86_64 (x86_64)
Python      : 3.8.13
検証日時    : 2026-09-21T08:52:03+09:00

参照した Issue(anthropics/claude-code): #87831, #89911

同じ著者の記事