CLAUDE LABEN
BUDGET — Claude Managed Agents のセッションに支出の上限を置けるようになりました。上限に達すると新しいモデルリクエストを始めず、budget_reached という stop reason で止まりますRESUME — 予算を変更するか外せばセッションは再開します。デプロイメントにも同じ予算を設定できますが、適用されるのはそこから始まる各セッション単位ですGEO — inference_geo が加わりました。エージェント作成時に model オブジェクトの中で指定するか、単一セッションだけ上書きできます。値は us か global の2つですSKILLS — Managed Agents のセッションが GitHub リポジトリをマウントすると、ルートの .claude/skills にあるスキルが開始時に自動で検出されますTRADEOFF — 便利さと文脈コストは同じ天秤に乗ります。読み込むスキルが増えれば、/skill-doctor が示す毎ターンの消費も増えることになりますCLI — Claude Code は9月6日の v2.1.263 以降、新しい版の確認が取れていません。版番号は飛ぶので公式チェンジログと CHANGELOG.md の両方で突き合わせてくださいBUDGET — Claude Managed Agents のセッションに支出の上限を置けるようになりました。上限に達すると新しいモデルリクエストを始めず、budget_reached という stop reason で止まりますRESUME — 予算を変更するか外せばセッションは再開します。デプロイメントにも同じ予算を設定できますが、適用されるのはそこから始まる各セッション単位ですGEO — inference_geo が加わりました。エージェント作成時に model オブジェクトの中で指定するか、単一セッションだけ上書きできます。値は us か global の2つですSKILLS — Managed Agents のセッションが GitHub リポジトリをマウントすると、ルートの .claude/skills にあるスキルが開始時に自動で検出されますTRADEOFF — 便利さと文脈コストは同じ天秤に乗ります。読み込むスキルが増えれば、/skill-doctor が示す毎ターンの消費も増えることになりますCLI — Claude Code は9月6日の v2.1.263 以降、新しい版の確認が取れていません。版番号は飛ぶので公式チェンジログと CHANGELOG.md の両方で突き合わせてください
記事一覧/Claude Code
Claude Code/2026-07-25上級

strictAllowlist で Claude Code サンドボックスの外向き通信を締める

Claude Code v2.1.219 の sandbox.network.strictAllowlist で自動化の外向き通信を締めた実践メモ。接続先を洗い出すスクリプト、失敗までの時間で拒否とDNSと回線を切り分ける実測、そして観測スクリプト自身が壊れていた三つの欠陥と修正版まで。

Claude Code250サンドボックス8セキュリティ20自動化86ネットワーク

プレミアム記事

深夜に回している自動投稿パイプラインが、理由も告げずに途中で止まっていました。

ログには接続タイムアウトらしき痕跡だけ。回線を疑い、再実行すると通ることもありました。よくある「たまに失敗するネットワーク」に見えたのです。けれど原因は回線ではありませんでした。許可リストに載せ忘れた一つのホストへの通信が、静かに拒否されていただけでした。

Claude Code v2.1.219(2026-07-24)で追加された sandbox.network.strictAllowlist を入れた直後のことです。この記事は、その設定を個人開発の自動化に組み込んだときの実務メモをお伝えします。設定を有効にする手順そのものよりも、有効にしたあとで何が壊れ、どう洗い出したかに紙幅を割きます。

そして記事の後半では、私が最初に書いた観測スクリプトそのものが壊れていたことを、実行結果とともに書き残します。締める側の仕掛けが先に壊れているという構図に気づいたのは、記事を一度公開したあとでした。

「拒否」は障害の顔をしてやってくる

strictAllowlist の考え方はごく単純です。サンドボックス内で実行するコマンドに対して、許可リストにないホストへの外向き通信を拒みます。自動化を安全側の既定で回すための、ちょうどよい締め方です。

ただ運用してみて分かったのは、拒否そのものより「拒否の見え方」が厄介だということでした。

許可リストから漏れたホストへの接続は、アプリケーションから見れば単なる接続失敗です。多くのツールはそこで「ネットワークが不調」と解釈し、リトライやタイムアウトのメッセージを出します。つまりポリシーによる意図的な遮断が、偶発的な回線障害と区別できない顔で現れます。ここが最初の落とし穴でした。この罠を抜けるには、原因を推測する前に事実を観測することです。

そこで私が最初にやったのは、許可リストを書くことではなく、パイプラインが実際にどのホストへ出ていくのかを一度残らず観測することでした。

実際に触るホストを洗い出す

頭の中の「たぶんこのホストに繋ぐはず」は当てになりません。connect(2) をトレースして、宛先を事実として集めます。次のスクリプトは、任意のコマンドをラップして接続先ホスト名を吐き出します。

#!/usr/bin/env bash
# egress-recon.sh — コマンドが実際に接続するホストを洗い出す
# 使い方: ./egress-recon.sh <実行したいコマンド...>
#   例: ./egress-recon.sh bash deploy-pipeline.sh
# ※ このスクリプトには後述する三つの欠陥があります。修正版は「観測の仕掛けが、
#    いちばん先に壊れていました」の節にあります
set -euo pipefail
 
TRACE="$(mktemp)"
trap 'rm -f "$TRACE"' EXIT
 
# connect(2) だけを追い、宛先アドレスを記録する
# -f: 子プロセスも追跡(git や npm はサブプロセスを大量に生む)
strace -f -qq -e trace=connect -o "$TRACE" "$@" || true
 
# IPv4 の宛先を抽出(sin_addr=inet_addr("x.x.x.x"))
grep -oE 'inet_addr\("[0-9.]+"\)' "$TRACE" \
  | grep -oE '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' \
  | sort -u > "$TRACE.ip"
 
echo "# 接続先ホスト(逆引き済み・重複排除)"
while read -r ip; do
  # ローカル/リンクローカルは除外
  case "$ip" in 127.*|0.0.0.0|169.254.*) continue;; esac
  host="$(getent hosts "$ip" | awk '{print $2}')"
  printf '%-24s %s\n' "${host:-"(逆引き不可)"}" "$ip"
done < "$TRACE.ip" | sort -u

ポイントは -f です。git pushnpm install も、実処理は子プロセスに委ねます。親プロセスだけ見ていると、肝心の接続を丸ごと取りこぼします。

私の環境でこれを一度回したところ、接続先は11ホストありました。事前に想定していたのは4つでした。想定のおよそ2.7倍です。

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
パイプラインが実際に触るホストを connect(2) トレースで洗い出す実行可能なスクリプト
失敗までの時間(0.02ms/1.22ms/3秒ちょうど)で拒否・DNS・回線を切り分ける実測データ
観測スクリプトが逆引き不可のIPで無言のまま空を返していた三つの欠陥と、実行して確かめた修正版
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • コピー&ペーストで使える実装コード付き
  • 毎日新しい上級ガイドを追加
  • ¥580/月 または ¥2,480 の永久アクセス
メンバーシップを見る →

関連記事

Claude Code2026-08-05
秘密を渡さず、リクエストだけ通す — サンドボックス資格情報マスキングの差し替えが効く境界
Claude Code のサンドボックス資格情報マスキングは、センチネル値を読ませて送信時に実値へ差し替える設計です。差し替えが効く認証方式と効かない方式、ボディに載せたときの長さのずれ、そしてチャンク分割転送で置換そのものが空振りする境界を、最小プロキシを自作して実測しました。
Claude Code2026-08-04
ファイルシステムの分離をネットワークと別に締める — 触ったパスを採り、書き込み面から絞る
Claude Code v2.1.216 でファイルシステムの分離をネットワークと切り離して指定できるようになりました。締める前にジョブが触ったパスを strace で採取し、読み取り面と書き込み面を分けて測った実務メモ。同じジョブを3回走らせたときのパス集合の安定率と、接頭辞に畳んだときの安定率の差まで実測しています。
Claude Code2026-07-19
コミット済みのシンボリックリンクが worktree の外を指す — AI に並列作業を預ける前のリポジトリ点検
Claude Code 2.1.212 で、コミット済みのシンボリックリンクを worktree 作成時に辿ってリポジトリ外へ書きうる不具合が修正されました。パッチが塞いだのは辿りの側です。危険なリンクがコミットされている側を点検する監査スクリプトと、隔離の手順をまとめました。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます