メインコンテンツへスキップ
failproofai には、エージェントの一般的な失敗パターンを検出する39個の組み込みポリシーが含まれています。各ポリシーは特定のフックイベントタイプとツール名に対して発火します。19個のポリシーはパラメーターを受け付け、コードを書かずに動作を調整できます。5つのワークフローポリシーは、Claude が停止する前にコミット → プッシュ → PR → CI のパイプラインを強制します。

概要

ポリシーはカテゴリごとにグループ化されています:
カテゴリポリシーフックタイプ
危険なコマンドblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
インフラコマンドblock-kubectl, block-terraform, block-aws-cli, block-gcloud, block-az-cli, block-helm, block-gh-pipelinePreToolUse
シークレット(サニタイザー)sanitize-jwt, sanitize-api-keys, sanitize-connection-strings, sanitize-private-key-content, sanitize-bearer-tokensPostToolUse
環境block-env-files, protect-env-varsPreToolUse
ファイルアクセスblock-read-outside-cwd, block-secrets-writePreToolUse
Gitblock-push-master, block-work-on-main, block-force-push, warn-git-amend, warn-git-stash-drop, warn-all-files-stagedPreToolUse
データベースwarn-destructive-sql, warn-schema-alterationPreToolUse
警告warn-large-file-write, warn-package-publish, warn-background-process, warn-global-package-installPreToolUse
パッケージマネージャーprefer-package-managerPreToolUse
ワークフローrequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-no-conflicts-before-stop, require-ci-green-before-stopStop
  • block- — エージェントの処理を停止します。
  • warn- — エージェントが自己修正できるよう追加のコンテキストを提供します。
  • sanitize- — エージェントが参照する前にツール出力から機密データを除去します。

名前空間

すべてのポリシーは <namespace>/<name> のスロットに存在します。組み込みポリシーは failproofai/ 名前空間に属します。例:failproofai/sanitize-jwt。名前空間により、短い名前が似ているカスタムポリシーやサードパーティポリシーを同時に読み込んでも衝突を防ぎます。 設定ファイルでは、短い名前または完全修飾名のどちらでも組み込みポリシーを参照できます。どちらの形式も同じポリシーに解決されます:
{
  "enabledPolicies": [
    "sanitize-jwt",
    "failproofai/block-rm-rf"
  ]
}
名前に / が含まれない場合、failproofai はデフォルト名前空間 failproofai に属するものとして扱います。すでに / を含む名前(例:myorg/foocustom/my-hook)はそのまま保持されます。
  • require- — 条件が満たされるまで Stop イベントをブロックします。

すべてのポリシーは policyParams でオプションの hint フィールドをサポートしています。hint は Claude が受け取る deny または instruct メッセージに追記され、ポリシーコードを変更せずに実行可能なガイダンスを提供します。組み込み、カスタム、コンベンションポリシーのいずれでも動作します。詳細は 設定 → hint を参照してください。

危険なコマンド

元に戻しにくい操作やホストシステムに損害を与えかねない操作をエージェントが実行するのを防ぎます。

block-sudo

イベント: PreToolUse (Bash)
デフォルト: sudo コマンドを含むすべての実行を拒否します。
sudo キーワードを含む実行をブロックします。パターンマッチングは生の文字列ではなく、解析済みのコマンドトークンに対して行われるため、シェルオペレーターインジェクションによる回避を防ぎます。 パラメーター:
パラメーターデフォルト説明
allowPatternsstring[][]許可する正確なコマンドプレフィックス。各エントリは解析済みの argv トークンに対してマッチングされます。
例:
{
  "policyParams": {
    "block-sudo": {
      "allowPatterns": ["sudo systemctl status", "sudo journalctl"]
    }
  }
}
この設定では sudo systemctl status nginx は許可されますが、sudo rm /etc/hosts は拒否されます。
パターンは生のコマンド文字列ではなく、解析済みトークンに対してマッチングされます。これにより、末尾に追加されたシェルオペレーターを使った回避を防ぎます(例:sudo systemctl status x; rm -rf /sudo systemctl status * にマッチしません)。

block-rm-rf

イベント: PreToolUse (Bash)
デフォルト: rm -rfrm -fr、および同様の再帰的削除の形式を拒否します。
パラメーター:
パラメーターデフォルト説明
allowPathsstring[][]再帰的削除が安全なパス(例:/tmp)。
例:
{
  "policyParams": {
    "block-rm-rf": {
      "allowPaths": ["/tmp", "/var/cache"]
    }
  }
}

block-curl-pipe-sh

イベント: PreToolUse (Bash)
デフォルト: curl <url> | bashcurl <url> | shwget <url> | bash、および同様のパターンを拒否します。
パラメーターなし。

block-failproofai-commands

イベント: PreToolUse (Bash)
デフォルト: failproofai 自体をアンインストールまたは無効化するコマンドを拒否します(例:npm uninstall failproofaifailproofai policies --uninstall)。
パラメーターなし。

インフラコマンド

コーディングエージェントがインフラ CLI を実行したり CI/CD パイプラインをトリガーしたりするのを防ぎます。このカテゴリのすべてのポリシーは オプトインdefaultEnabled: false)です。kubectlterraform などを正当に呼び出す必要があるエージェントは、ポリシーを有効化しない限り影響を受けません。有効化すると、allowPatterns のエントリとマッチしない限り、マッチした CLI のすべての呼び出しが拒否されます。 パターン文法は block-sudo と同じです:トークンは解析済みの argv に対してマッチングされ、* は1トークンのワイルドカードです。スタンドアロンのシェルオペレーター(&&|||;)を含むコマンドや、シェルメタキャラクターが埋め込まれたトークンを含むコマンドは、インジェクション回避を防ぐためにアローリストマッチングの前に拒否されます。

block-kubectl

イベント: PreToolUse (Bash)
デフォルト: すべての kubectl 呼び出しを拒否します。
パラメーター:
パラメーターデフォルト説明
allowPatternsstring[][]許可する kubectl コマンドプレフィックス。
例:
{
  "policyParams": {
    "block-kubectl": {
      "allowPatterns": ["kubectl get *", "kubectl describe *", "kubectl logs *"]
    }
  }
}
この設定では kubectl get pods は許可されますが、kubectl apply -f deploy.yaml は拒否されます。

block-terraform

イベント: PreToolUse (Bash)
デフォルト: すべての terraform または tofu(OpenTofu)呼び出しを拒否します。
パラメーター:
パラメーターデフォルト説明
allowPatternsstring[][]許可する terraform/tofu コマンドプレフィックス。
例:
{
  "policyParams": {
    "block-terraform": {
      "allowPatterns": ["terraform plan", "terraform validate", "terraform show *"]
    }
  }
}

block-aws-cli

イベント: PreToolUse (Bash)
デフォルト: すべての aws CLI 呼び出しを拒否します。
パラメーター:
パラメーターデフォルト説明
allowPatternsstring[][]許可する aws CLI コマンドプレフィックス。
例:
{
  "policyParams": {
    "block-aws-cli": {
      "allowPatterns": ["aws s3 ls *", "aws sts get-caller-identity"]
    }
  }
}

block-gcloud

イベント: PreToolUse (Bash)
デフォルト: すべての gcloud(Google Cloud)CLI 呼び出しを拒否します。
パラメーター:
パラメーターデフォルト説明
allowPatternsstring[][]許可する gcloud コマンドプレフィックス。
例:
{
  "policyParams": {
    "block-gcloud": {
      "allowPatterns": ["gcloud auth list", "gcloud config list"]
    }
  }
}

block-az-cli

イベント: PreToolUse (Bash)
デフォルト: すべての az(Azure)CLI 呼び出しを拒否します。
パラメーター:
パラメーターデフォルト説明
allowPatternsstring[][]許可する az CLI コマンドプレフィックス。
例:
{
  "policyParams": {
    "block-az-cli": {
      "allowPatterns": ["az account show", "az group list"]
    }
  }
}

block-helm

イベント: PreToolUse (Bash)
デフォルト: すべての helm 呼び出しを拒否します。
パラメーター:
パラメーターデフォルト説明
allowPatternsstring[][]許可する helm コマンドプレフィックス。
例:
{
  "policyParams": {
    "block-helm": {
      "allowPatterns": ["helm list", "helm status *"]
    }
  }
}

block-gh-pipeline

イベント: PreToolUse (Bash)
デフォルト: 状態を変更するかパイプラインをトリガーする以下の gh CLI サブコマンドを拒否します:
  • gh workflow rungh workflow enablegh workflow disable
  • gh run rerungh run cancel
  • gh pr merge
  • gh release creategh release delete
  • gh cache delete
  • gh secret setgh secret delete
gh pr viewgh pr listgh run listgh release viewgh api repos/.../... などの読み取り専用 gh サブコマンドは、このポリシーにマッチしません。これらは failproofai 自身の require-ci-green-before-stop を含むワークフローチェックで日常的に必要とされます。 パラメーター:
パラメーターデフォルト説明
allowPatternsstring[][]通常は拒否される場合でも許可する特定のスクリプト化された呼び出し。
例:
{
  "policyParams": {
    "block-gh-pipeline": {
      "allowPatterns": ["gh run rerun *"]
    }
  }
}

シークレット(サニタイザー)

エージェントが認証情報をコンテキストや出力に漏洩させるのを防ぎます。サニタイザーポリシーは PostToolUse イベントで発火します。Claude が Bash コマンドを実行したり、ファイルを読んだり、ツールを呼び出したりすると、これらのポリシーは Claude に返される前に出力を検査します。シークレットパターンが検出された場合、ポリシーは出力が返されるのを防ぐ deny 決定を返します。

sanitize-jwt

イベント: PostToolUse(すべてのツール)
デフォルト: JWT トークン(. で区切られた3つの base64url セグメント)を削除します。
パラメーターなし。

sanitize-api-keys

イベント: PostToolUse(すべてのツール)
デフォルト: 一般的な API キー形式を削除します:Anthropic(sk-ant-)、OpenAI(sk-)、GitHub PAT(ghp_)、AWS アクセスキー(AKIA)、Stripe キー(sk_live_sk_test_)、Google API キー(AIza)。
パラメーター:
パラメーターデフォルト説明
additionalPatterns{ regex: string; label: string }[][]シークレットとして扱う追加の正規表現パターン。
例:
{
  "policyParams": {
    "sanitize-api-keys": {
      "additionalPatterns": [
        { "regex": "myco_[A-Za-z0-9]{32}", "label": "MyCo internal API key" },
        { "regex": "pat_[0-9a-f]{40}", "label": "Internal PAT" }
      ]
    }
  }
}

sanitize-connection-strings

イベント: PostToolUse(すべてのツール)
デフォルト: 認証情報が埋め込まれたデータベース接続文字列を削除します(例:postgresql://user:password@host/db)。
パラメーターなし。

sanitize-private-key-content

イベント: PostToolUse(すべてのツール)
デフォルト: PEM ブロック(-----BEGIN PRIVATE KEY----------BEGIN RSA PRIVATE KEY----- など)を削除します。
パラメーターなし。

sanitize-bearer-tokens

イベント: PostToolUse(すべてのツール)
デフォルト: トークンが20文字以上の Authorization: Bearer <token> ヘッダーを削除します。
パラメーターなし。

環境

機密性の高い環境設定がエージェントによって読み取られたり公開されたりするのを防ぎます。

block-env-files

イベント: PreToolUse (Bash, Read)
デフォルト: cat .env や、.env をファイルパスとして指定した Read ツール呼び出しなどによる .env ファイルの読み取りを拒否します。
.envrc やその他の環境関連ファイルはブロックしません。正確に .env という名前のファイルのみが対象です。 パラメーターなし。

protect-env-vars

イベント: PreToolUse (Bash)
デフォルト: 環境変数を表示するコマンドを拒否します:printenvenvecho $VAR
パラメーターなし。

ファイルアクセス

エージェントをプロジェクト境界内で作業させ、機密ファイルへのアクセスを防ぎます。

block-read-outside-cwd

イベント: PreToolUse (Read, Bash)
デフォルト: プロジェクトルート外のファイルの読み取りを拒否します。境界は CLAUDE_PROJECT_DIR(Claude Code がセッションごとに1回設定)で、この変数が未設定の場合はセッションの現在の作業ディレクトリにフォールバックします。ライブの cwd ではなくプロジェクトルートを使用することで、Claude がサブディレクトリに cd した後も境界が安定したままになります。
パラメーター:
パラメーターデフォルト説明
allowPathsstring[][]プロジェクトルート外であっても許可する絶対パスプレフィックス。
例:
{
  "policyParams": {
    "block-read-outside-cwd": {
      "allowPaths": ["/shared/data", "/opt/company/config"]
    }
  }
}

block-secrets-write

イベント: PreToolUse (Write, Edit)
デフォルト: 秘密鍵と証明書に一般的に使用されるファイルへの書き込みを拒否します:id_rsaid_ed25519*.key*.pem*.p12*.pfx
パラメーター:
パラメーターデフォルト説明
additionalPatternsstring[][]ブロックする追加のファイル名パターン(グロブ形式)。
例:
{
  "policyParams": {
    "block-secrets-write": {
      "additionalPatterns": [".token", ".secret"]
    }
  }
}

Git

元に戻しにくい誤ったプッシュ、強制プッシュ、ブランチ操作ミスを防ぎます。

block-push-master

イベント: PreToolUse (Bash)
デフォルト: git push origin main および git push origin master を拒否します。
パラメーター:
パラメーターデフォルト説明
protectedBranchesstring[]["main", "master"]直接プッシュできないブランチ名。
例:
{
  "policyParams": {
    "block-push-master": {
      "protectedBranches": ["main", "master", "release", "prod"]
    }
  }
}
すべてのブランチへのプッシュを許可する場合(enabledPolicies からポリシーを削除せずに実質的に無効化する)、protectedBranches: [] を設定してください。

block-work-on-main

イベント: PreToolUse (Bash)
デフォルト: 作業ツリーが main または master にある状態での git commitgit mergegit rebasegit cherry-pick を拒否します。ブランチの作成と切り替え(git checkoutgit checkout -bgit switchgit switch -c)は影響を受けません。
パラメーター:
パラメーターデフォルト説明
protectedBranchesstring[]["main", "master"]commit/merge/rebase/cherry-pick を拒否するブランチ名。

block-force-push

イベント: PreToolUse (Bash)
デフォルト: git push --force および git push -f を拒否します。
ポリシー固有のパラメーターはありません。代替手段を提示するには、汎用の hint を使用してください:
{
  "policyParams": {
    "block-force-push": {
      "hint": "Create a new branch from your current HEAD (e.g. `git checkout -b <new-branch>`) and push that instead."
    }
  }
}

warn-git-amend

イベント: PreToolUse (Bash)
デフォルト: git commit --amend を実行する際に、慎重に進むよう Claude に指示します。コマンドはブロックしません。
パラメーターなし。

warn-git-stash-drop

イベント: PreToolUse (Bash)
デフォルト: git stash drop を実行する前に確認するよう Claude に指示します。コマンドはブロックしません。
パラメーターなし。

warn-all-files-staged

イベント: PreToolUse (Bash)
デフォルト: git add -A または git add . を実行する際に、ステージングする内容を確認するよう Claude に指示します。コマンドはブロックしません。
パラメーターなし。

データベース

データベースに対して実行される前に、破壊的な SQL 操作を検出します。

warn-destructive-sql

イベント: PreToolUse (Bash)
デフォルト: DROP TABLEDROP DATABASE、または WHERE 句なしの DELETE を含む SQL を実行する前に確認するよう Claude に指示します。
パラメーターなし。

warn-schema-alteration

イベント: PreToolUse (Bash)
デフォルト: ALTER TABLE ステートメントを実行する前に確認するよう Claude に指示します。
パラメーターなし。

警告

リスクはあるものの破壊的ではない操作の前に、エージェントに追加のコンテキストを提供します。

warn-large-file-write

イベント: PreToolUse (Write)
デフォルト: 1024 KB を超えるファイルを書き込む前に確認するよう Claude に指示します。
パラメーター:
パラメーターデフォルト説明
thresholdKbnumber1024警告が発生するファイルサイズのしきい値(キロバイト単位)。
例:
{
  "policyParams": {
    "warn-large-file-write": {
      "thresholdKb": 256
    }
  }
}
フックハンドラーはペイロードに対して 1 MB の stdin 制限を適用します。小さなコンテンツでこのポリシーをテストするには、thresholdKb を 1024 より十分小さい値に設定してください。

warn-package-publish

イベント: PreToolUse (Bash)
デフォルト: npm publish を実行する前に確認するよう Claude に指示します。
パラメーターなし。

warn-background-process

イベント: PreToolUse (Bash)
デフォルト: nohup&disownscreen を使ってバックグラウンドプロセスを起動する際に注意するよう Claude に指示します。
パラメーターなし。

warn-global-package-install

イベント: PreToolUse (Bash)
デフォルト: npm install -gyarn global add、または仮想環境なしの pip install を実行する前に確認するよう Claude に指示します。
パラメーターなし。

パッケージマネージャー

エージェントが使用できるパッケージマネージャーを制限します。

prefer-package-manager

イベント: PreToolUse (Bash)
デフォルト: 無効。有効化すると、allowed リストにないパッケージマネージャーのコマンドをブロックし、許可されたマネージャーを使用してコマンドを書き直すよう Claude に指示します。
検出対象:pip, pip3, python -m pip, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo。
パラメーターデフォルト説明
allowedstring[][]許可するパッケージマネージャー名。リストにない検出されたマネージャーはブロックされます。空の場合、ポリシーは何もしません。
blockedstring[][]組み込みリストに加えてブロックする追加のマネージャー名(例:['pdm', 'pipx'])。
組み込みのブロックリストには以下が含まれます:pip, pip3, npm, npx, yarn, pnpm, pnpx, bun, bunx, uv, poetry, pipenv, conda, cargo。このリストにないマネージャーを追加するには blocked を使用してください。 設定例:
{
  "enabledPolicies": ["prefer-package-manager"],
  "policyParams": {
    "prefer-package-manager": {
      "allowed": ["uv", "bun"],
      "blocked": ["pdm", "pipx"]
    }
  }
}
この設定では、pip install flaskpdm install flask はどちらも拒否され、uv または bun を使用するよう指示するメッセージが表示されます。uv pip install flask のようなコマンドは、uv がアローリストに含まれており最初にチェックされるため、許可されます。

AI の動作

エージェントが行き詰まったり予期しない動作をしたりするのを検出します。

warn-repeated-tool-calls

イベント: PreToolUse(すべてのツール)
デフォルト: 同じツールが同一パラメーターで3回以上呼び出された場合に、再考するよう Claude に指示します。これはエージェントがループに陥っている一般的なサインです。
パラメーターなし。

ワークフロー

セッション終了時に規律あるワークフローを強制します。これらのポリシーは Stop イベントで発火し、各条件が満たされるまでエージェントの停止を拒否します。自然な依存チェーン(コミット → プッシュ → PR → CI)に従います。ポリシーが拒否した場合、チェーン内の後続ポリシーはスキップされます(deny はショートサーキットします)。 すべてのワークフローポリシーは フェイルオープンです:必要なツールが利用できない場合(例:gh がインストールされていない、git リモートがない)、ポリシーはチェックがスキップされた理由を説明する情報メッセージとともに許可します。

CLI ごとの Stop セマンティクス

Stop の強制は、7つのサポートされている CLI によって若干異なります。各 CLI が異なる「エージェント終了」フックコントラクトを公開しているためです。結果は同じ(ワークフローゲートが失敗している状態でエージェントが停止することを防ぐ)ですが、仕組みは異なります。以下の表に要約します。require-*-before-stop ポリシーを有効化する前に理解しておく価値のあるユーザー向けの注意点があるのは Pi のみです。
CLIゲートが発火するタイミングユーザーが見るもの
Claude Code同じエージェントループ、即座Claude は作業を継続し、問題を修正してから再度終了を試みます。ユーザーには中断は見えません。
Codex同じエージェントループ、即座Claude と同じ。
GitHub Copilot CLI同じエージェントループ、即座Claude と同じ(Copilot の {decision:"block", reason} リトライチャネルを使用 — Copilot CLI 1.0.41 に対して実証的に検証済み)。
Cursor Agent同じエージェントループ、即座Claude と同じ(Cursor の {followup_message} チャネルを使用 — loop_limit、デフォルト5回のリトライまで)。
Gemini CLI同じエージェントループ、即座Claude と同じ(AfterAgent{decision:"block", reason} チャネルを使用)。
OpenCode同じエージェントループ、即座Claude と同じ(hookSpecificOutput.additionalContext を通じてルーティングされた OpenCode の client.session.prompt(...) SDK 呼び出しを使用)。
Pi (pi-coding-agent)次のユーザーターンPi はゲートが発火すると見えた形で停止します — エージェントループが終了し、プロンプトに戻ります。次にプロンプトを送信したときにゲートが発火します:failproofai はそのターンのシステムプロンプトに MANDATORY ACTION REQUIRED ディレクティブを先頭に追加し、LLM にリクエストを実行する前にワークフローステップ(コミット、プッシュなど)を完了するよう指示します。
Pi の制限。 Pi の AgentEndEvent(Claude の Stop フックに相当するアップストリーム)には Result 型がありません。発火するときには Pi のエージェントループはすでに終了しています。Pi は Claude / Copilot / Cursor / Gemini / OpenCode のように同じループを強制的に再試行させることができません。failproofai はゲートを Pi の before_agent_start イベント(次のユーザープロンプト後に発火)にシフトすることで、現在のターンではなく次のターンでワークフローチェックを強制します。実際の動作:
  • Pi が停止した後、deny の理由は Pi のセッション ID をキーとしてメモリ内にキャプチャされます。同じ Pi プロセスで次に送信するプロンプトがそれを消費します:LLM はシステムプロンプトの先頭に MANDATORY ACTION REQUIRED ディレクティブが表示され、コミット(またはプッシュ / PR 作成 / CI 待機)してからリクエストを続行します。キャプチャされた deny の理由はワンショットです — 一度消費されるとゲートはクリアされます。
  • ゲートは Pi のプロセスライフタイムに束縛されます。ターン間で Pi を Ctrl+C で終了したりキルしたりすると、メモリ内のエントリはプロセスとともにドロップされ、ゲートは見逃されます。Claude、Copilot、Cursor、Gemini、OpenCode も同じ制約があります(エージェントをキルするとゲートが見逃されます)— Pi はエージェントがゲートの前に見えた形で終了するため、より目立つだけです。
  • 保留中の deny は、何らかの理由(new / resume / fork / quit)による session_shutdown でもクリアされます。そのため、以前のセッションの古いゲートが同じ Pi プロセスで開始された新しいセッションに漏れることはありません。
Claude スタイルの同一ループリトライが必要な場合は、他の6つのサポートされている CLI のいずれかで Stop ポリシーを実行してください。このギャップを埋めるための AgentEndEvent への将来の Result 型追加について、Pi のアップストリームを追跡しています。

require-commit-before-stop

イベント: Stop
デフォルト: コミットされていない変更(変更済み、ステージ済み、または追跡されていないファイル)がある場合に停止を拒否します。作業ディレクトリがクリーンな場合は情報メッセージを返します。
パラメーターなし。

require-push-before-stop

イベント: Stop
デフォルト: プッシュされていないコミットがある場合、または現在のブランチにリモートトラッキングブランチがない場合に停止を拒否します。必要に応じてトラッキングブランチを作成するために git push -u を提案します。リモートが設定されていない場合はフェイルオープンします。
パラメーター:
パラメーターデフォルト説明
remotestring"origin"プッシュ先のリモート名。
例:
{
  "policyParams": {
    "require-push-before-stop": {
      "remote": "upstream"
    }
  }
}

require-pr-before-stop

イベント: Stop
デフォルト: 現在のブランチに対してプルリクエストが存在しない場合、またはマージされずにクローズされた PR がある場合に停止を拒否します。gh pr create で PR を作成するよう Claude に指示します。PR が マージ済みの場合、ポリシーは許可します(作業が公開されています)。メッセージはブランチを切り替えるよう示唆します(git checkout main && git pull)。
パラメーターなし。
このポリシーには GitHub CLIgh)がインストールされ認証されている必要があります。 プルリクエストへの読み取りアクセスのために repo スコープを持つ個人アクセストークンで gh auth login を実行してください。gh がインストールされていないか認証されていない場合、ポリシーはフェイルオープンし、理由を Claude に報告します。

require-no-conflicts-before-stop

イベント: Stop
デフォルト: 現在のブランチがベースブランチにクリーンにマージできない場合に停止を拒否します。ポリシーはまず GitHub 上のブランチに OPEN な PR があることを確認します — PR がない場合、強制するマージターゲットがないため、ポリシー全体がショートサーキットして許可します。OPEN な PR が確認されると、2つの独立したプローブが実行されます:
  1. ローカルgit merge-tree --write-tree --name-only origin/<baseBranch> HEAD。コンフリクトが発生した場合、deny メッセージは競合するファイルを名前で示し、Claude が何を解決すべきかを正確に把握できるようにします。
  2. GitHub — 事前チェックですでに取得した gh pr view --json mergeable,state の結果を再利用します。ローカルの origin/<baseBranch> が古い場合に見逃してしまうコンフリクトを検出します(例:最後のフェッチ以降に誰かが main に競合する PR をマージした場合)。CONFLICTING の結果は拒否されます。UNKNOWN の結果も拒否され、Claude は再度停止を試みる前に約10秒待って再チェックするよう指示されます — これにより、GitHub が再計算中の偽陰性を防ぎます。
以下の場合はスキップします(許可します):gh がインストールされていない、ブランチに PR が存在しない、PR の状態が OPEN でない(例:MERGEDCLOSED)、または gh pr view が解析不能な出力を返す。また、origin/<baseBranch> がローカルに存在しない場合や、ベースより先のコミットがない場合もフェイルオープンします — これらのレイヤー1フォールスルーは、許可する前にキャッシュされた PR のマージ可能性を参照します。 パラメーター:
パラメーターデフォルト説明
baseBranchstring"main"コンフリクトをチェックするベースブランチ。
このポリシーには GitHub CLI(gh)が必要です。ポリシーは競合プローブを実行する前に gh pr view を使用して OPEN な PR が存在することを確認します — gh がない場合、ポリシーはショートサーキットして許可します。プルリクエストへの読み取りアクセスのために repo スコープを持つ個人アクセストークンで gh auth login を実行してください。

require-ci-green-before-stop

イベント: Stop
デフォルト: 現在のブランチで CI チェックが失敗しているかまだ実行中の場合に停止を拒否します。GitHub Actions ワークフローの実行とサードパーティのボットチェック(例:CodeRabbit、SonarCloud、Codecov)の両方をチェックします。skippedcancelledneutral の結論は失敗として扱いません(後者は例えば、Socket Security が外部コントリビューターの PR に対して success/failure ではなく intentionally neutral を報告する場合をカバーします)。すべてのチェックが通過すると情報メッセージを返します。
パラメーターなし。
このポリシーには GitHub CLIgh)がインストールされ認証されている必要があります。 Actions ワークフローの実行と Checks API への読み取りアクセスのために repo スコープを持つ個人アクセストークンで gh auth login を実行してください。gh がインストールされていないか認証されていない場合、ポリシーはフェイルオープンし、理由を Claude に報告します。


個別ポリシーの無効化

設定の enabledPolicies から特定のポリシーを削除するか、ダッシュボードの「ポリシー」タブでオフに切り替えてください。
{
  "enabledPolicies": [
    "block-rm-rf",
    "sanitize-api-keys"
  ]
}
enabledPolicies にリストされていないポリシーは、policyParams にエントリが存在しても実行されません。