クイックスタート
1. デフォルト設定を生成
ccchain init.ccchain.conf が生成されます。
2. Hook を登録
.claude/settings.json に追加:
{
"hooks": {
"PreToolUse": [
{
"matcher": "Bash",
"hooks": [{"type": "command", "command": "ccchain hook pre"}]
}
]
}
}3. 動作確認
ccchain check # 設定ファイルの検証
ccchain audit # ルールのフラット展開表示
ccchain eval "find . | rm" # → deny
ccchain eval "ls -la | head" # → allowdeny メッセージによる Claude の誘導
ccchain がコマンドをブロックすると、deny メッセージが Claude に「なぜダメか」「代わりに何をすべきか」を伝えます。Claude はこのメッセージを読んで自律的にコマンドを書き直します。
例: Claude が古いログファイルを削除しようとする
Claude: find /var/log -name "*.log" -mtime +30 -deleteccchain がブロック:
find -delete は破壊的です。代わりに: find ... -print > /tmp/targets.txt で一覧を出力し、内容を確認してから xargs rm < /tmp/targets.txt で削除してください
Claude がメッセージを読んで書き直し:
Claude: find /var/log -name "*.log" -mtime +30 -print > /tmp/old_logs.txt
Claude: wc -l /tmp/old_logs.txt # 47 ファイル
Claude: head -5 /tmp/old_logs.txt # サンプルを確認
Claude: xargs rm < /tmp/old_logs.txt| ブロックされたコマンド | Claude の書き直し |
|---|---|
find . -exec rm {} \; | find → 一覧出力 → 確認 → rm |
find . | rm | 同上 |
curl | bash | ファイルにダウンロード → 確認 → 実行 |
eval "..." | eval を使わずコマンドを直接記述 |
ccchain は単なるブロッカーではなく、Claude に安全なパターンを教える教育ツールです。
4. プロジェクトに合わせてルールを調整
デフォルトルールセットは危険パターン(find | rm, curl | bash, eval 等)をカバーしますが、プロジェクト固有のコマンドは ask(確認ダイアログ)になります。
ステップ 1: プロジェクトのコマンドを収集
プロジェクトで使う典型的なコマンドを列挙し、現在のルールで評価します:
ccchain eval "go test ./..."
ccchain eval "npm run build"
ccchain eval "git status"
ccchain eval "make test"または ccchain suggest を起点にします:
echo "go test ./...
npm run build
git status
make test
cat README.md" | ccchain suggestステップ 2: ルールを提案
評価結果を Claude(または LLM)に渡し、.ccchain.conf の追加ルールを提案してもらいます。LLM はプロジェクトの文脈を踏まえてコマンドの安全性を判断できます。
ステップ 3: セキュリティレビュー(必須)
このステップは省略不可。 提案されたルールを適用する前に、セキュリティレビューを実施します:
セキュリティレビューエージェントに提案ルールの監査を依頼。以下をチェック:
allowルールがパイプ/exec コンテキストで悪用されないか- コマンドをトップレベルで許可することで破壊的操作のバイパスパスが生まれないか
- コマンドの副作用が十分に考慮されているか
セキュリティレビューアーが指摘した場合は提案を修正し、承認後に .ccchain.conf に追加します。
ステップ 4: 適用して検証
レビュー済みルールを .ccchain.conf に追記:
# プロジェクトビルドツール(レビュー済み)
allow go
allow npm
allow make
# 安全なユーティリティ
allow cat
allow cp
allow mkdir
allow echo
allow pwd
# Git
allow git検証:
ccchain check # 構文 OK
ccchain audit # 展開ルールを確認5. 上級: パイプ/exec ルール
allow npm
|
deny rm "npm の出力を rm にパイプしないでください"6. 個人用オーバーライド
.ccchain.local.conf(.gitignore 対象):
allow rm