Claude Codeの--dangerously-skip-permissions(通称yoloモード)が、いつの間にか特定のファイルに対して効かなくなっていた。調査して原因を特定したので記録しておきます。

発端

Discordから自分のClaude Code環境(ccdb経由)に.bashrcの編集を頼んだら、「許可が必要です」と返ってきた。yoloモードで動かしてるのに。以前は何の問題もなく.bashrcを編集できていたので、何かが壊れたとしか思えない。

調査:2層構造の権限チェック

調べてみると、CLIの権限チェックが2つのレイヤーに分かれていることがわかった。

レイヤー対象yoloフラグ
ツール実行レベルBash / Edit / Write 等のツール呼び出し許可バイパスされる
ファイルレベル.bashrc, .claude/, .ssh/ 等の sensitive file への書き込みバイパスされない

つまり --dangerously-skip-permissions は第1層しか突破できず、第2層のsensitive fileチェックはyoloモードでも有効なままになっていた。

面白いのは、Bashツールecho >> ~/.bashrc)にはこのファイルレベルチェックがないこと。同じセッションで同じファイルに対して、Editツールは失敗するがBashツールは成功する。

原因特定:v2.1.78のリグレッション

upstream の issue #35895 で同じ問題が報告されていた。v2.1.78(2026-03-17リリース)でリグレッションとして混入し、最後に動いたバージョンはv2.1.77。regressionラベルとhas reproラベルが付いている。

ちなみにこのバグの副作用として、-pモード(SDK/非対話モード)ではpermission denialが返ってきてもユーザーが承認する手段がないため、モデルが無限リトライに入るという別の問題も報告されている。

対応方針

バージョンをv2.1.77に固定する手もあるが、最新版を使い続けたいので、ccdb側でワークアラウンドを実装する方針にした。Edit/Writeがsensitive fileでブロックされた場合に、Bashツールで同等の操作をフォールバックさせる仕組みを入れる予定。

upstreamが直ったらワークアラウンドは外す。

教訓

  • 「yoloモード」だからといって本当に何でもできるわけではなかった
  • CLIの権限チェックには可視化されていない層がある
  • OSSの自分の環境を持っていると、こういうリグレッションの切り分けが自力でできるのは強い