エージェントに git push をさせようとすると拒否されます。直前にこちらが「いいよ」と言っていても拒否されます。会話の同意は、実行時に参照される承認とは別物だからです。
通るのは AskUserQuestion で選択肢を出し、選ばれた結果に従って実行する形だけです。これを知らないと、拒否がツールの故障のように見えます。
push の話だと思っていた
この手順は最初 push 用に書いてありました。その後、8 GB に載らない ollama のモデルを削除しようとして、同じ形で落ちました。
Permission for this action was denied by the Claude Code auto mode classifier.
curl -X DELETE です。git は関係ありません。拒否されたのは push だからではなく、取り返しがつかないからでした。
AskUserQuestion で対象 8 本とそれぞれのサイズを出して選んでもらうと、同じコマンドがそのまま通り、152 GB 空きました。手順は 1 文字も変えていません。
聞く前に確かめること
承認を求める質問は、何が起きるかを名指ししていないと意味がありません。記憶ではなく、その場でシステムから読み返します。
| 操作 | 読み返すもの |
|---|---|
| push | ブランチと git log @{u}..HEAD |
| force push・履歴書き換え | 変わるコミット数、内容が同一かどうか、他のクローンに reset --hard が要ること |
amend / reset --hard / rebase | 何が捨てられるか、それが push 済みか |
revert | どのコミットか。revert はコミットを足すだけで何も壊さないので、そう言う |
| ファイル・モデル・イメージの削除 | 一覧、各サイズ、合計、再取得できるか |
| サービスやコンテナの停止 | 何が落ちるか、他に誰が使っているか、戻し方 |
revert の行は逆向きの注意です。無い危険を並べると、次の本物が素通りします。
承認しても通らないとき
承認を取ったうえでなお拒否されることがあります。そのときは止めて、何をしようとしていたかと、実行に何が要るかを伝えて渡します。
別のツールで同じ効果を出しにいってはいけません。拒否は障害ではなく、そこで止まるべきだという合図です。
選択は 1 回ぶん
選ばれた選択肢が覆うのは、その質問が名指しした操作だけです。次の操作にも、同じ操作の範囲を広げた版にも及びません。1 回の承認を根拠に 2 回目を実行すると、承認の記録と実際に起きたことがずれます。
質問文はそのまま記録になります。後からログを読む人が、何が承認されたのかを組み立て直さずに読めるように書きます。