Bible Network Crypto DeFi Onchain RWA AI Agent Stablecoin Chain SAFU CryptoTax DeFAI AGI Claude Me Claude Skill Claude Design Claude Cowork
独立メディア
いかなるプロジェクトとも無提携
Claudeスキルを学んで、すべてをもっとうまくやろう
claudeskill-me.com
最新
OpenTelemetryでClaude Codeの圧縮とhookを見る:compaction、hook_execution_complete、precompute_reuseの読み方  ·  Bash権限ルールの死角:denyは/bin/rm、bash -c、git -Cを止められず、devbox run *は内側のどんなコマンドも通す  ·  CLAUDE.mdが長すぎるとき:.claude/rules/とpathsで、特定のファイルに触れたときだけルールを読み込む  ·  Claude Codeのサンドボックスで「No usable sandbox!」:--no-sandbox、excludedCommands、allowNestedUserNamespacesがそれぞれ手放すもの  ·  Claude Code v2.1.309がサンドボックスと権限の抜けをまとめて修正:起動ファイルのサンドボックス外実行、シンボリックリンク経由のdenyWriteなど  ·  auto modeの$defaultsの落とし穴:autoMode.soft_denyに文字列を1つ入れ忘れると、組み込みのforce pushルールが丸ごと消える
practice

auto modeの$defaultsの落とし穴:autoMode.soft_denyに文字列を1つ入れ忘れると、組み込みのforce pushルールが丸ごと消える

30秒バージョン · 忙しい方へ
auto modeの配列から"$defaults"を外すと、ルールを1つ足したのではなく、組み込みリスト全体を置き換えたことになる。

詳しく読む +
01 · なぜ起きたのか?

soft_denyを1つ足したいだけです。最も安全な書き方は?

配列の最初に"$defaults"を置き、その後に自分のルールを書く。公式によれば組み込みルールがその位置に差し込まれ、将来の更新も継承できる。編集後はclaude auto-mode configで有効な設定を確認する。

02 · 仕組みは?

プロジェクトの.claude/settings.jsonにautoModeを書いたのに反応しません。なぜ?

分類器はプロジェクト設定のautoModeを読まない。公式の理由は、それらのファイルがリポジトリ内にあり、チェックイン済みのリポジトリが自分用のallowルールを注入できてしまうからだ。~/.claude/settings.json、managed settings、または--settingsで渡す。

03 · 自分にどう影響する?

pushの前に必ず確認を挟みたい。何を使う?

permissions.askを使う。例:Bash(git push *)。分類器より先に評価され、常に確認が出る。制限は、その文字列で始まるコマンドにしか一致しない点で、git -C <dir> pushは素通りする。コマンド全文を見るならPreToolUse hookを使う。

04 · どうすればいい?

エンジニアではありません。これは私に関係ありますか?

チームがauto modeを使っていて誰かがこの設定を編集すると、force pushの保護などが誰にも気づかれずに外れる可能性がある。安全ルールブックへの「追記」と「書き換え」の違いが、既定値マーカー1つだと考えるとよい。変更後はclaude auto-mode configを実行して結果を読む。

全文 +

auto modeは、分類器が各ツール呼び出しを審査する権限モードだ。公式のauto mode設定ページには見落としやすい警告がある。autoMode.environment、allow、soft_deny、hard_denyのいずれかの配列に文字列"$defaults"を入れずに設定すると、そのセクションの組み込みリストが丸ごと置き換わる。本稿はこの落とし穴、ルールの優先順位、設定ファイルの置き場所を整理する。特記がない限り、以下は公式ページの内容だ。

書き方2通り、結果は大違い

組み込みルールを残して自分のルールを足す例:

{
  "autoMode": {
    "soft_deny": [
      "$defaults",
      "Never modify files under infra/terraform/prod/"
    ]
  }
}

こちらは"$defaults"の1行が違うだけだ:

{
  "autoMode": {
    "soft_deny": [
      "Never modify files under infra/terraform/prod/"
    ]
  }
}

公式の警告は率直だ。soft_denyから"$defaults"を外すと組み込みのsoft blockルールがすべて消え、ページはforce push、curl | bash、本番デプロイ、auto modeの迂回を挙げている。hard_denyから外すと組み込みのデータ流出ルールが消える。各セクションは独立しているので、environmentだけ設定しても他の3つの既定リストには影響しない。

ルールの優先順位

分類器内部は4段階だ。hard_denyは無条件でブロックし、ユーザーの意図もallowの例外も効かない。次がsoft_denyで、ユーザーの意図とallowで上書きできる。allowはsoftルールへの例外として働く。最後に、ユーザーのメッセージがClaudeのこれから行う正確な操作を直接具体的に述べていれば、残るsoftブロックも解除される。ページの例では、「リポジトリを整理して」はforce pushの許可にならないが、「このブランチをforce-pushして」は許可になる。

分類器の外側にはさらに強い2層がある。permissions.denyは分類器の前にブロックし、何も上書きできない。Bash(git push *)のような内容指定のpermissions.askは常に確認を出し、分類器は承認できない。ただしこの種のルールはその文字列で始まるコマンドにしか一致せず、git -C <dir> pushは対象外だと公式も注意している。コマンド全文を検査するならPreToolUse hookを使う。

設定の置き場所:プロジェクト内のautoModeは読まれない

分類器がautoModeを読むのは~/.claude/settings.json、managed settings、--settingsフラグだけだ。プロジェクトの.claude/settings.jsonやsettings.local.jsonは読まない。リポジトリ内のファイルだと、チェックイン済みのリポジトリやビルド手順が自分用のallowルールを注入できてしまうからだ。プロジェクトに書いても効かない。各スコープの項目は結合され、開発者は追加できてもmanagedの項目は削除できない。ただし公式ページ自身が、開発者の追加したallowが組織のsoft_denyを上書きできると明記している。これは加算であり厳格なポリシー境界ではなく、絶対に実行させたくないものはmanagedのpermissions.denyに置く。

確認に使うコマンド

  • claude auto-mode defaultsは組み込みの4リストを出力する。--labelでラベルの先頭から1ルールだけ表示できる(v2.1.208以降)。
  • claude auto-mode configは分類器が実際に使う設定を出力する。編集のたびに実行して確認する。
  • claude auto-mode critiqueは自作ルールの曖昧さ、重複、誤検知の可能性をAIがレビューする。
  • claude auto-mode resetはユーザー設定からautoModeを削除する(v2.1.212以降)。確認が入り、managedと--settingsのルールは残る。
  • /auto-mode-setupはプロジェクトと最近のセッションからenvironment項目を下書きする。docsページはPro、Max、Teamプランが必要でクラウドセッションでは実行できないと書く一方、v2.1.304のリリースノートはBedrock、Vertex、Foundry、Claude apps gateway、テレメトリ無効のセッションでも使えると書いている。2つの記述は食い違っており、私には整合させられないので、自分のバージョンでの実際の挙動を確認してほしい。CLAUDE.md、README、設定、最近のセッションでClaudeが実行したコマンドを走査し、あなたのメッセージは読まない。承認すると、触れたallow、soft_deny、hard_denyに"$defaults"が追加される。

無難な進め方は、まずenvironmentだけを設定し(公式は多くの組織でそれで足りると述べる)、ルールを足すときはすべての配列の先頭に"$defaults"を置くことだ。ここまでは公式ドキュメントの事実で、この順序は公式の導入手順を私が言い換えたものであり、自分で検証した結果ではない。

出典:Configure auto mode - Claude Code Docs、Claude Code changelog - Claude Code Docs
図解
auto mode 的檢查順序與 $defaults 陷阱一次工具呼叫依序經過 permissions.deny、ask、hard_deny、soft_deny、allow;autoMode 只從使用者與 managed 設定讀取,陣列漏掉 "$defaults" 會取代內建清單Order of checks for one tool call in auto modepermissions.denyBlocks before the classifier. Nothing overrides itpermissions.ask (content-scoped)Always prompts. Classifier cannot approveautoMode.hard_denyUnconditional. Intent and allow do not applyautoMode.soft_denyBlocks, unless allow or explicit user intent clears itautoMode.allowExceptions to soft_denyWhere autoMode is read~/.claude/settings.jsonmanaged settings--settings flagNOT .claude/settings*.json in the repoThe trapAn array without "$defaults"replaces the built-in listfor that sectionVerify: claude auto-mode configDraft: /auto-mode-setupClaude Skill Me · claudeskill-me.com
スクリーンショット歓迎。転載時は出典を明記してください。
質問する
10文字以上入力してください
関連記事
Bash権限ルールの死角:denyは/bin/rm、bash -c、git -Cを止められず、devbox run *は内側のどんなコマンドも通す
practice · 10/23
Claude Codeのフックは既定でfail-open:スクリプト不在、タイムアウト、exit 1でも通過する——v2.1.295のonFailure: "block"の使い方
practice · 10/19
Hookに「blocking error」と表示されたのに、ファイルは変更されている?PostToolUseとPreToolUseの「ブロック」は同じ意味ではない
practice · 09/28
Claude Codeのサンドボックスで「No usable sandbox!」:--no-sandbox、excludedCommands、allowNestedUserNamespacesがそれぞれ手放すもの
advanced · 10/23
関連ニュース
関連トピック
Claude CodeのAuto Modeが8月14日からデフォルトに、ルールは今や平易な文章で書けるように
Claude Me
Auto Modeをデフォルトにすることが本当に変えるのは「誰が確認ボタンを押すか」ではなく、「事前にポリシーを書いているかどうか」だ——独自のルールを持たないチームは、ずっと他人が決めたデフォルト値の上で動いていたことになる。
#auto-mode#hard-deny#soft-deny
Claude Code Auto Mode に「今回は許可、次回はまた確認」オプション追加:作業ディレクトリ外読み取りのジレンマを解決
Claude Me
一度の承認が永久の信頼を意味するべきではない——「今回は許可、次回はまた確認」は Auto Mode の権限設計に欠けていた中間の選択肢を埋める。
#auto-mode
Claude Code の新しい rm コマンドルール:2分間応答がなければハングせず自動拒否
Claude Me
危険コマンドの確認はもう無期限にハングしない——2分応答がなければ自動拒否してパイプラインは続行するが、変わったのは待機の扱い方であり危険判定自体ではない。
#auto-mode
Claude Code の Auto Mode 分類器が無料に——ただしゲートウェイ経由だと静かに課金が続く
Claude Me
Auto Mode の安全分類器は無料になったが、ゲートウェイ経由だと静かに旧料金を払い続けており、誰も教えてくれない。
#auto-mode