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前提: Homebrew と jq がインストール済みであること。
# 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 |
| パス | 用途 |
|---|---|
. |
カレントディレクトリ(自由に操作可能) |
$CLAUDE_CONFIG_DIR |
Claude の設定・履歴 |
/private/tmp, /var/folders |
macOS 一時ファイル |
$HOME/Library/Caches |
macOS アプリキャッシュ |
$HOME/.npm |
npm キャッシュ |
$HOME/.local/share |
CLI ツール用データ |
上記以外のディレクトリは読み込みも書き込みも禁止されます。
| コマンド | 理由 |
|---|---|
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 /... |
ディレクトリ外の削除防止 | 対象を確認して実行 |
そのツールがデータを保存するディレクトリを ~/.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