ポケモン例外処理

種類を問わずあらゆる例外をまとめてcatchする雑な例外処理こと。ポケモンアニメの決め台詞「ポケモンゲットだぜ」の英語バージョン "Gotta catch 'em allに引っ掛けたネタ

try {
    // ...
} catch (Exception e) {
    // get to catch all ~~pokemon~~ exceptions
    System.out.println("Gotcha! I caught a" + e.getClass().getName() + "!" );
}

Claude Codeでsandboxを有効にするとconfigディレクトリに書き込めなくなる件

最新版では修正済み


タイトル通りなのだが、sandbox機能を有効にするとプロジェクトルートにあるconfigというディレクトリに対してコマンドによる書き込みができなくなってしまう。

sandbox機能を有効にすると、コマンド実行に対して以下の制限がかかる(なお、制限されるパスは /sandboxConfig で見ることができる)

  • プロジェクトディレクトリの外への書き込み制限
  • プロジェクトディレクトリ内の次のパスへの書き込み制限
    • HEAD
    • objects
    • refs
    • hooks
    • config

これは .git ディレクトリの構造に見える。本当は.git/HEADなどを追加するつもりだったのだろうが、このミスのせいでプロジェクトルートの config ディレクトリに書き込みができなくなってしまっている。とはいえsandboxはコマンド実行に対する制限であり、Writeツールには影響せず、普通に書き込めるので実用上はそれほど問題にならない。

ただ.git/HEADが正しかったとしても、それもおかしな話になる。sandboxの制限はgitコマンドにも適用されるので「コミットして」といった指示に支障をきたす。なので実はパスの誤りですらなく、手違いで意図しないパスが混入してしまっただけのようにも思われる。もしくはgit操作はデフォルトで制限するが、コミットもClaude任せにしたいならgitコマンドをsandboxのExcluded Commandsに加えろという意図があるのかもしれない。

真相は不明だが、直してほしいというissueは既に登録されていた。

github.com

なお、これはClaude Code 2.1.74 で確認された不具合である。開発速度が非常に速いので来月には修正されているかもしれない。