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

概要

ポリシーはカテゴリ別にグループ化されています:
カテゴリポリシーフックタイプ
危険なコマンドblock-sudo, block-rm-rf, block-curl-pipe-sh, block-failproofai-commandsPreToolUse
シークレット(サニタイザー)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
ワークフローrequire-commit-before-stop, require-push-before-stop, require-pr-before-stop, require-ci-green-before-stopStop
  • block- — エージェントの処理を停止します。
  • warn- — エージェントが自己修正できるよう追加のコンテキストを提供します。
  • sanitize- — エージェントが参照する前に、ツールの出力から機密データを除去します。
  • 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)を拒否します。
パラメーターなし。

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

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

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)
デフォルト: 現在の作業ディレクトリ(プロジェクトルート)外のファイルの読み取りを拒否します。
パラメーター:
パラメーターデフォルト説明
allowPathsstring[][]cwd 外であっても許可する絶対パスのプレフィックス。
例:
{
  "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 maingit 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 ブランチへの直接チェックアウトを拒否します。
パラメーター:
パラメーターデフォルト説明
protectedBranchesstring[]["main", "master"]直接チェックアウトできないブランチ名。

block-force-push

イベント: PreToolUse (Bash)
デフォルト: git push --forcegit 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 に指示します。
パラメーターなし。

AI の動作

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

warn-repeated-tool-calls

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

ワークフロー

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

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 に指示します。
パラメーターなし。
このポリシーには GitHub CLIgh)のインストールと認証が必要です。 プルリクエストへの読み取りアクセスのために repo スコープを持つパーソナルアクセストークンで gh auth login を実行してください。gh がインストールされていないか認証されていない場合、ポリシーはフェイルオープンし、その理由を Claude に報告します。

require-ci-green-before-stop

イベント: Stop
デフォルト: 現在のブランチで CI チェックが失敗しているか、まだ実行中の場合に停止を拒否します。GitHub Actions のワークフロー実行とサードパーティのボットチェック(CodeRabbit、SonarCloud、Codecov など)の両方を確認します。skipped の結論は成功として扱います。すべてのチェックが通過した場合は情報メッセージを返します。
パラメーターなし。
このポリシーには GitHub CLIgh)のインストールと認証が必要です。 Actions ワークフロー実行および Checks API への読み取りアクセスのために repo スコープを持つパーソナルアクセストークンで gh auth login を実行してください。gh がインストールされていないか認証されていない場合、ポリシーはフェイルオープンし、その理由を Claude に報告します。


個別ポリシーの無効化

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