⚠️
Claude Code Shell でのコマンド実行には気をつけようという話
コマンド実行時の注意
Claude Code には ! で任意のコマンドを実行する機能がある。
単に実行されるだけと思うかもしれないが、実はそんなことはなく、コマンドの内容と結果はコンテキストに乗ってしまう。
ドキュメント に
コマンドを直接実行し、実行出力をセッションに追加
とあるとおり、あくまでも結果をコンテキストに乗せるためのものであって、単にコマンドを実行するためのものではない。
こんな感じになる
❯ ! ls somedir
⎿ aaa
bbb
ccc.json
❯ 今実行したコマンドと結果のサマリを教えて
● ls somedir コマンドで somedir ディレクトリの内容を一覧表示しました。
結果として3つのエントリが確認されました:
- aaa
- bbb
- ccc.json
例
以下のような例は問題になりうる:
# パスワードが引数に書いてあるものを実行してしまう
❯ ! mysql -u admin -pMySecretPassword123 mydb -e "SELECT 1"
# Secrets Manager のvalueが取得され、コンテキストに乗ってしまう
❯ ! aws secretsmanager get-secret-value --secret-id my-db-credentials
これらはそれぞれ
- コマンド引数に含まれるMySQLサーバーのパスワード
- コマンド結果に含まれるSecrets Manager のクレデンシャル
がそれぞれコンテキストとともに Claude Code のサーバーに送信されることになる。
そのような仕組みになっていることを理解したうえで気を付けて利用したい。
Discussion