Claude Codeの自動実行モードに止められたときの対処:許可ルールを設定ファイルに足す
私の経験に基づく記録ですので、これを推奨するものでも、動作を保証するものでもありません。あくまでも参考情報としてご覧ください。
Claude Codeのauto mode(自動実行モード)を使っていると、スクリプトの実行時に権限チェックで止められることがあります。
私の場合は、外部サービスに書き込むスクリプトを実行させようとしたところ、Permission for this action was denied by the Claude Code auto mode classifier. と表示されて処理が止まりました。
プロジェクトの .claude/settings.json に許可ルールを追加したところ、実行できるようになりました。 そのときに設定した内容を残しておきます。
何が起きたか
Claude Codeに、外部サービスのAPIにデータを書き込むスクリプトを実行させようとしたところで、こう返ってきました。
アップロード(外部サービスへの書き込み)は自動実行モードの権限チェックで止められました。書き込み以外は完了しているので、ここで提案表を提示して止まります。
作業ログには、止めた側のメッセージが理由付きで残っていました。
Permission for this action was denied by the Claude Code auto mode classifier.
Reason: [Real-World Transactions].
同じスクリプトをターミナルから直接打ったときには、止められませんでした。
Claude Codeの中で実行するときだけ、チェックが入るようです。
自動実行モードとは
自動実行モードってなに?
「自動実行モード(auto mode)」は、Claude Code の権限モードの一つです。私がツール(Bash など)を使うたびに毎回「実行してよいですか」と確認するのではなく、AI の分類器が各操作を自動で審査し、安全と判定したものは確認なしで実行、リスクがあると判定したものは拒否するモードです。
分類器は「アップロードだけで取引はまだ作らない」という細かい意図までは見ていないので、外部の API に POST する可能性がある時点で止まった、という状況です。
対処の選択肢
対処の選択肢は3つあります。
1. 今回だけ手元で実行する。前の返信に貼ったコマンドをそのまま実行してもらう方法です。一番手軽です。
2. 権限モードを変える。Claude デスクトップアプリの権限モードの設定で「毎回確認する」モードにすると、書き込み操作の前に私が確認ダイアログを出し、あなたが「許可」を押せば実行できます。
3. 許可ルールを追加する。プロジェクトの .claude/settings.json に「このスクリプトの実行は常に許可」というルールを書くと、auto mode のままでも次回から止まりません。書き込み操作を無条件で通すことになるので、このスクリプトが「–yes なしでは取引を作らない」設計であることを踏まえた上で判断してください。
3にして。
ここは少し悩みました。
書き込みを無条件で通すのに抵抗がありましたが、書き込み先が自分だけの会計データなので、大きな事故にはならないと判断してこの設定にしました。
会社のデータで使うなら、何度か実行して問題ないことを確認してから、常に許可設定にする方が無難だと思います。
設定ファイルに足された内容
Claude Codeがプロジェクトのフォルダに .claude/settings.json を作って、こう書きました。
{
"permissions": {
"allow": [
"Bash(cd /path/to/project)",
"Bash(python freee_receipt.py *)",
"Bash(cd /path/to/project && python freee_receipt.py *)"
]
}
}
「このコマンドで始まる Bash は許可する」という意味です。1本目はフォルダ移動(cd)の許可で、2・3本目がスクリプト本体です。最後の * は「この後に何が付いても」の意味です。スクリプト名は自分のものに読み替えてください。
コマンドを限定せず "Bash" とだけ書けば、Bash を全部許可にもできます。
ただそれだと止めてほしい操作まで通ってしまうので、ここは慎重に、このスクリプトだけにしました。
同じセッションでスクリプトを再実行すると、今度は止まらずに通りました。
気をつけること
- 許可ルールに入れたコマンドは、以降チェックなしで通ります。今回のスクリプトは「–yes を付けない限り取引を作らない」作りだったので、許可しても確認の段階は残ります
- ルールはそのプロジェクトのフォルダにだけ効きます。他のフォルダの Claude Code には影響しません
私の場合
止められたのは、freeeに領収書をアップロードして取引登録するスクリプトでした。
#3でターミナルから打っていたスクリプトを、#4でスキルに組み込んでClaude Codeから実行させたら、ここで止められました。
記事を書いた後に知ったこと
記事を書いた後に知ったのですが、許可ルールはスキルの先頭(frontmatter)に allowed-tools として書く方法もあります。
「このスキルのみに許可」ということなので、スキルに書く方が正しそうです。書き方はスキルの作り方に書きました。
検証しようと思って、いちど settings.json の記載を削除して試したところ、ブロックされず、自動実行モードの動作も毎回同じではない、ということを知りました。