Skip to content

Claude Code のサンドボックス&ガードレール設定(cage + hooks)

Notifications You must be signed in to change notification settings

mono96/claude-code-guard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 

Repository files navigation

Claude Code Guard

Claude Code を「開いているフォルダの中だけで作業させる」ための設定セットです。

何をするか

レイヤー 仕組み 役割
cage OS レベルのサンドボックス カレントディレクトリ外へのファイルアクセスを遮断
hooks Bash / WebFetch 実行前の検証 危険なコマンドやデータ流出を理由付きで拒否
settings.json Claude Code の権限設定 bypassPermissions で自走 + deny リストで二重防御

セットアップ

git clone <this-repo>
cd claude-code-setup
chmod +x setup.sh
./setup.sh

前提: Homebrewjq がインストール済みであること。

使い方

# claude ではなく cage claude で起動する
cage claude

# パラメータはそのまま渡せる
cage claude --continue
cage claude -p "テストを実行して"

設定ファイルの配置先

ファイル 配置先
cage/presets.yml ~/.config/cage/presets.yml
claude/settings.json ~/.claude/settings.json(既存設定にマージ)
claude/hooks/validate-bash.sh ~/.claude/hooks/validate-bash.sh

cage が許可するディレクトリ

パス 用途
. カレントディレクトリ(自由に操作可能)
$CLAUDE_CONFIG_DIR Claude の設定・履歴
/private/tmp, /var/folders macOS 一時ファイル
$HOME/Library/Caches macOS アプリキャッシュ
$HOME/.npm npm キャッシュ
$HOME/.local/share CLI ツール用データ

上記以外のディレクトリは読み込みも書き込みも禁止されます。

hooks が拒否するコマンド

間接実行の防止(パターン回避対策)

コマンド 理由
eval 文字列をコマンドとして実行(全チェックを回避可能)
| bash / | sh パイプ経由のシェル実行
base64 -d エンコードされたコマンドの実行
$VAR push 変数経由のコマンド実行
source / . 外部スクリプトの読み込み実行

ネットワーク経由のデータ流出防止

コマンド 理由
curl -X POST / -d / -F HTTP でのデータ送信
curl + $(...) / ` GET でもコマンド置換でデータを URL に埋め込む手口を防止
wget --post-data / --post-file wget でのデータ送信
python/node の送信系 API requests.post, urlopen, fetch
nc / netcat 任意のネットワーク通信
WebFetch(長いクエリパラメータ) URL にデータを埋め込む流出を防止(200文字超で拒否)

環境変数の読み取り防止

コマンド 理由
env / printenv 全環境変数の一覧(API キー等の漏洩防止)
export -p 全 export 変数の一覧
set(引数なし) シェル変数の一覧

危険なコマンドの防止

コマンド 理由 代替
git push 意図しないプッシュ防止 ユーザーが手動実行
git add -A / git add . 不要ファイルの混入防止 ファイル名を個別指定
sed Claude 内蔵ツールを使う Edit ツール
awk Claude 内蔵ツールを使う perl / python3
rm -rf /... ディレクトリ外の削除防止 対象を確認して実行

カスタマイズ

MCP ツールを追加したとき

そのツールがデータを保存するディレクトリを ~/.config/cage/presets.yml に追加してください。

presets:
  claude-code:
    allow:
      - "$CLAUDE_CONFIG_DIR"
      - "$HOME/.serena"  # 例: serena を使う場合

拒否コマンドを追加したいとき

~/.claude/hooks/validate-bash.sh にパターンを追加してください。

# 例: docker を禁止
if echo "$command" | grep -qE '\bdocker\b'; then
  deny "docker は禁止です。理由を書く。"
fi

About

Claude Code のサンドボックス&ガードレール設定(cage + hooks)

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages