> ## Documentation Index
> Fetch the complete documentation index at: https://ccsafetynet.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# 公式 rulebook：インフラ CLI 向けの既製ルール

> terraform destroy、aws s3 rm、gcloud projects delete、az group delete など、破壊的な AWS・Azure CLI・gcloud・Terraform コマンドをブロックする既製の CC Safety Net rulebook を、公式 GitHub リポジトリからコマンド 1 つで導入します。

CC Safety Net は、コーディングエージェントが最も頻繁に触れるインフラ CLI 向けに、精選された rulebook を公開しています。各 rulebook は 1 つの CLI を対象に、識別可能な破壊的操作をブロックします。導入はコマンド 1 つです：

```bash theme={"dark"}
npx -y cc-safety-net rule add --only terraform --global
```

rulebook は JSON データです。実行されることはなく、拒否を追加するだけで、CC Safety Net の組み込み保護を弱めることもできません。このページは公式カタログを扱います。rulebook のファイル形式と `rule` コマンドの完全なリファレンスは[カスタムルール](/docs/ja/configuration/custom-rules)を参照してください。

<Note>
  公式 rulebook は `rulebook_version: 2` を使用し、**CC Safety Net 2.3.0 以降**が必要です。
</Note>

## カタログ

[`cc-safety-net/rulebooks`](https://github.com/cc-safety-net/rulebooks) リポジトリは CLI ごとに 1 つの rulebook を提供します：

| Rulebook    | CLI         | ブロック対象                                                                                                                                        |
| ----------- | ----------- | --------------------------------------------------------------------------------------------------------------------------------------------- |
| `terraform` | `terraform` | `destroy`、`apply -destroy`、`state rm`、`state push`、`workspace delete`                                                                         |
| `aws`       | `aws`       | S3 オブジェクトとバケットの削除、`ec2 terminate-instances`、`cloudformation delete-stack`、RDS と DynamoDB の削除、`eks delete-cluster`、`kms schedule-key-deletion` |
| `gcloud`    | `gcloud`    | `projects delete`、`compute instances delete`、`storage rm`、Cloud SQL と GKE の削除、`kms keys versions destroy`、および alpha・beta・preview リリースチャネル     |
| `azure`     | `az`        | `group delete`、`resource delete`、VM・AKS・ストレージ・SQL・Cosmos DB の削除、`keyvault purge`                                                              |

各 rulebook は**識別可能な誤操作を精選してカバーするもの**であり、プロバイダー API を完全にモデル化したものではありません。`aws s3 rm --dryrun`、`terraform state rm -dry-run`、`aws ec2 terminate-instances --dry-run` などの安全なプレビューは許可されたままです。各 rulebook にはリポジトリ内に根拠ページがあり、各ルールが存在する理由、安全なプレビュー、意図的な除外、既知のギャップを記録しています：[terraform](https://github.com/cc-safety-net/rulebooks/blob/main/docs/terraform.md) · [aws](https://github.com/cc-safety-net/rulebooks/blob/main/docs/aws.md) · [gcloud](https://github.com/cc-safety-net/rulebooks/blob/main/docs/gcloud.md) · [azure](https://github.com/cc-safety-net/rulebooks/blob/main/docs/azure.md)。

## 導入

基本はユーザースコープに導入してください。`terraform` や `aws` はプロジェクトをまたいで使うので、保護も特定のリポジトリではなく自分自身に付いてくるべきです：

```bash theme={"dark"}
# Everything the repository publishes
npx -y cc-safety-net rule add cc-safety-net/rulebooks --global

# A selection
npx -y cc-safety-net rule add --only terraform aws --global

# Pin an immutable release tag instead of following the default branch
npx -y cc-safety-net rule add --ref v1.0.0 --only terraform --global
```

`--only` と `--ref` はリポジトリの設定元でしか意味を持たないため、設定元を指定せずにどちらかを渡すと、`cc-safety-net/rulebooks` が選ばれます。リポジトリを自分で指定しても、これまでどおり動作します。このリポジトリが公開する rulebook をすべて導入する場合は、この指定が必要です。

`--global` を省くとプロジェクトスコープに導入されます。取り込まれたファイルはリポジトリの `.cc-safety-net/` 配下に置かれるため、コミットすればチームメイト全員のクローンにルールが届きます。[チームセットアップ](/docs/ja/guides/team-setup)を参照してください。

正式な形式の指定で rulebook を 1 つだけ追加することもできます。`rule list` が表示し、`rule remove` が受け取るのもこの形式です：

```bash theme={"dark"}
npx -y cc-safety-net rule add cc-safety-net/rulebooks#main/terraform --global
```

## 導入時に行われること

`rule add` は選択した各 rulebook を取得し、スキーマを検証して同梱のテストフィクスチャを実行したうえで、ファイルを自分のスコープの `rules/<name>/rulebook.json` に**取り込み**（vendor）、内容の取得元コミットを報告します。以降、ランタイムはツール呼び出しのたびにこの取り込み済みのコピーを読み取ります。バックグラウンドでの取得も自動更新もありません。

コピーが変わるのは、次のコマンドを実行したときだけです：

```bash theme={"dark"}
# Re-resolve every followed branch or tag ref and report added/removed/modified rules
npx -y cc-safety-net rule update

# Refresh one source
npx -y cc-safety-net rule update cc-safety-net/rulebooks#main/terraform
```

リリースタグは不変なので、`--ref v1.0.0` での導入は常に同じ内容を取り込みます。ref を切り替えるまで、その設定元への `rule update` は何も変更しません。

## ルールの上書きと rulebook の削除

ルールを無効化したりブロック理由を差し替えたりするには、`rule.json` のルール単位の上書きを使います。rulebook ファイル自体は変更されないため、`rule update` と競合しません。構文は [`rule.json` のスキーマ](/docs/ja/configuration/custom-rules#rule-json-schema)を参照してください。rulebook ごと削除するには：

```bash theme={"dark"}
npx -y cc-safety-net rule remove cc-safety-net/rulebooks#main/terraform --global
```

## 任意のリポジトリから導入する

公式リポジトリに特別な仕組みはありません。`.cc-safety-net/rules/<name>/rulebook.json` という配置で rulebook を公開している GitHub リポジトリなら、どれでも `rule add owner/repo` で導入できます。チームやベンダーも同じ方法で独自のカタログを公開できます。

<Warning>
  rulebook は拒否を追加するだけで実行されることはありませんが、コマンドがブロックされたとき、そのルールの内容はエージェントに伝わる情報の一部になります。サードパーティの rulebook は追加する前に内容を確認し、管理外のブランチを追うのではなく、自分で確認したタグやコミットを `--ref` で固定することを推奨します。
</Warning>

## rulebook が効かないとき

`npx -y cc-safety-net rule list` は有効な各 rulebook とそのルール数を表示し、`npx -y cc-safety-net explain "terraform destroy"` は判定がどのルールによるものかをトレースします。設定元が無効と表示される場合の修復手順は、[rulebook はライブファイル](/docs/ja/configuration/custom-rules#rulebooks-are-live-files)を参照してください。
