Skip to content

原文(日本語に翻訳)

オートモードの安全性を改善:ローカル作業を破棄するよう指示していない場合、git reset --hardgit checkout -- .git clean -fdgit stash drop などの破壊的な git コマンドがブロックされるようになりました。また、そのセッションでエージェントが作成したコミットでない場合は git commit --amend がブロックされ、特定のスタックを明示的に指定しない限り terraform destroy/pulumi destroy/cdk destroy がブロックされます。

原文(英語)

Improved auto mode safety: destructive git commands (git reset --hard, git checkout -- ., git clean -fd, git stash drop) are now blocked when you didn't ask to discard local work, git commit --amend is blocked when the commit wasn't made by the agent this session, and terraform destroy/pulumi destroy/cdk destroy are blocked unless you asked for the specific stack.

概要

Claude Code のオートモード(--dangerously-skip-permissions)で実行中に、意図せずローカルの変更が失われたり、インフラが破壊されたりするリスクを防ぐための安全策が強化されました。エージェントがユーザーの明示的な指示なしに破壊的なコマンドを実行しようとした場合、自動的にブロックされます。

基本的な使い方

この変更はオートモードで自動的に機能します。通常の使用では変化はありませんが、以下のコマンドは明示的な指示がない限りブロックされます:

ブロックされる git コマンド:

bash
git reset --hard       # ブロック(ローカル変更破棄の指示がない場合)
git checkout -- .      # ブロック(同上)
git clean -fd          # ブロック(同上)
git stash drop         # ブロック(同上)
git commit --amend     # ブロック(エージェントが作成したコミットでない場合)

ブロックされるインフラ破壊コマンド:

bash
terraform destroy      # ブロック(特定スタックの指定がない場合)
pulumi destroy         # ブロック(同上)
cdk destroy            # ブロック(同上)

実践例

安全にブロックされるケース

# ユーザーの指示なしにエージェントが実行しようとした場合
git reset --hard HEAD~1
# → ブロック:「ローカル作業を破棄するよう指示されていません」

明示的な指示でブロックを解除

# 正しい指示の例
ユーザー:「直前のコミットを取り消して、ローカルの変更も破棄してください」
# → エージェントは git reset --hard を実行可能

ユーザー:「staging スタックを terraform destroy で削除してください」
# → エージェントは特定スタックへの destroy を実行可能

git commit --amend の制限

bash
# エージェントが今セッションで作成したコミットは amend 可能
# 以前から存在するコミットへの amend はブロックされる
# → 意図しない既存コミット履歴の改ざんを防止

注意点

  • この保護機能はオートモード(--dangerously-skip-permissions)で動作時にのみ適用されます
  • 通常のインタラクティブモードでは、エージェントは許可を求めるプロンプトを表示します
  • 破壊的なコマンドを本当に実行させたい場合は、会話の中で明示的に指示してください
  • git commit --amend の制限はセッションをまたぐため、以前のセッションで作成されたコミットも保護対象です

関連情報