Claude Code v2.1.221:VSCode Focus ViewとAPIキー漏洩を防ぐ認証マスキング
「サンドボックスを有効にしているのに、~/.sshや.envを読めてしまっている」。セキュリティ研究者のSimion Agavriloaei氏はブログでこう書いた。Claude Codeのサンドボックスが認証情報を含むファイルを読み取れてしまう問題を検証し、「Claude Code /sandbox still reads your SSH keys」と題して公開した(出典: Simion Agavriloaei氏ブログ、2026年7月)。
この問題の直接の答えが、8月4日リリースのv2.1.221に入ったsandbox credential masking(mode: mask)だ。加えて、セキュリティ研究者に指摘されていたzshの権限バイパス(CVE-2026-24053)の修正と、VSCode拡張のFocus Viewという使い勝手の改善も含む。計39件の変更を含む今回のリリースを整理する。
- Claude Codeを日常的に使っていてv2.1.221の変更点を素早く把握したい方
- サンドボックス環境でAPIキーやSSHキーを扱っており、セキュリティ設定の改善を検討している方
- VSCode拡張のFocus Viewで表示の見通しを改善したい方
- Claude Codeのauto modeや権限モデルの動作を理解したいエンジニア
- Focus View(Ctrl+Alt+F): VSCode拡張のチャットメニューにトグルを追加。ツール実行ログをターン単位のサマリーに折りたたむ。アシスタント本文テキストが隠れるという批判あり(Issue #50894)
- Credential Masking(mode: mask): サンドボックス内コマンドには偽値(sentinel)を見せ、外部通信時にプロキシが本物に差し替える。Linux/WSL2のみ完全対応、macOSはファイルマスクがdenyにフォールバック
- zsh権限バイパス修正: zshの
[[ ]]正規表現条件式内に隠されたコマンドが権限確認を迂回できた問題を修正(CVE未割り当て) - その他39件: Windowsのkernel32直接呼び出しで起動高速化、statsパネルのキャッシュトークン内訳表示、MCPのprint mode接続バグ修正など
VSCode Focus View — ツール実行ログの洪水を断ち切る
Claude Codeで長時間の自動処理を走らせていると、チャット画面がツール呼び出しのログで埋め尽くされる。ファイルの読み書き、Bashコマンドの実行、MCPツールの呼び出し。それぞれが数十行のログを生成し、会話の文脈が流れる。
v2.1.221で導入されたFocus Viewはこの問題に対応する。VSCode拡張のチャットメニューにトグルが追加され、Ctrl+Alt+Fを押すか、コマンドパレットから「Claude Code: Toggle Focus view」を実行すると切り替わる。有効にすると、ツール実行の詳細がターン単位の折りたたみ可能なサマリーに置き換わり、実行中のツールはライブインジケーターで確認できる。展開すれば詳細も見られる(出典: Release v2.1.221 · anthropics/claude-code)。
ただし、この機能には既に批判的な声がある。
「Focus Modeはツール呼び出しの間にClaudeが出力したアシスタント本文テキストをすべて隠してしまう。ツールの裏で作業しながらClaudeが送ったメッセージが一瞬グレーで見えてから消えるが、それは読むべきものだった。フォーカスをオフにしない限り取り戻せない」とGitHub Issue #50894で@sha2fiddy氏は指摘する(出典: GitHub Issue #50894、2026年4月19日)。
同氏が挙げた具体例はこうだ。「見える問題: 私が質問し、Claudeがフォローアップ作業をしながらその間に回答する。回答が隠れる。私が同じ質問をまた聞く。Claudeが『さっき上で答えました』と返す。私はその回答を一度も見ていない」。
@alkautsarf氏はMCPツールの問題をより技術的に指摘する。「以前のリッチ表示はサーバー名、ツール関数名、MCPラベル、パラメーターの値がインラインで見えた。今の折りたたみ形式では サーバーを呼び出しました だけになった。MCPツールはサーバー名だけでは何を呼び出したかわからない」(出典: GitHub Issue #48005)。
Focus Viewは「ノイズを減らしたいが、重要な情報は失いたくない」というニーズに対して半分しか答えていない状態だ。長時間の自動処理で進捗だけ把握したい使い方には向くが、対話的な作業でClaudeの思考過程を追いたい場合はオフにしておいたほうが無難だ。
Sandbox Credential Masking — sentinelでAPIキーを守る仕組み
サンドボックスの認証情報漏洩は、Claude Codeのセキュリティ上の弱点として繰り返し指摘されてきた課題だ。v2.1.221が導入したmode: "mask"はこれへの直接の答えになる。
従来のmode: "deny"が環境変数や認証情報を完全に削除していたのに対し、mode: "mask"は「偽値(sentinel)を見せ、プロキシが差し替える」という方式を取る。サンドボックス内で動くコマンドはセッションごとに生成された偽のsentinel値のみを受け取り、設定したinjectHostsに指定したホスト(例: api.github.com)へ通信する際にのみ、サンドボックスプロキシが本物の認証情報に差し替える(出典: Configure the sandboxed Bash tool - Claude Code Docs)。
設定の基本形はuser settingsまたはmanaged settingsに書く:
{
"sandbox": {
"credentials": {
"envVars": [
{
"name": "GH_TOKEN",
"mode": "mask",
"injectHosts": ["api.github.com"]
}
]
}
}
}
重要な制約が3つある。
network.tlsTerminateの設定が必須。欠けているとmaskはフェイルセーフ(fails closed)に倒れず、sentinelがそのままサーバーに届いて認証エラーになるinjectHostsの各ホストはnetwork.allowedDomainsにも含まれている必要がある- セキュリティ上の理由からリポジトリの
.claude/settings.jsonからはこの設定が無視される。user settingsまたは--settingsCLIフラグ経由でのみ有効だ
プラットフォームの制限もある。LinuxはLinuxコンテナ隔離ツールのbubblewrapとネットワークプロキシのsocatを使って完全動作し、WSL2も同様だ。macOSではファイル全体をマスクする場合にdenyにフォールバックする(出典: Claude Code Docs)。Windowsネイティブではサンドボックス自体が非対応のため、この機能は使えない。
この変更の背景には、Claude Codeのネットワークサンドボックスに5ヶ月以上存在した脆弱性(CVE-2026-25725)がある。攻撃者がANTHROPIC_API_KEYやGH_TOKENなどのクレデンシャルを外部へ送信できたと報告されており(出典: Cybersecurity News)、この修正はその問題への対応としての文脈がある。ただし、WSL2環境でmanaged settingsを使う場合にbwrap: Can't mkdirエラーでClaude Code自体が起動しなくなる問題(GitHub Issue #80284)も並行して報告されており、企業環境への展開では注意が必要だ(出典: GitHub Issue #80284)。
zsh [[ ]]条件式バイパスの修正
v2.1.221に含まれるセキュリティ修正の中で、最も技術的に興味深いのがzshの権限バイパス修正だ(現時点でCVE番号は割り当てられていない)。
zshでは[[ string =~ regex ]]形式の条件式内で正規表現を評価する際、副作用を持つ式を実行できる。この構文を使うと、Claude Codeが権限確認プロンプトを表示する前にコマンドが実行されてしまっていた。修正後は、この形式のコマンドが検出された場合に権限確認ダイアログを表示するよう変更された(出典: Release v2.1.221 · anthropics/claude-code)。
同リリースにはPowerShellの関連修正も含まれる。パスにクォート文字が含まれる場合の権限チェック誤動作と、並列ツール呼び出し時の権限チェックでプロンプトキャッシュのプレフィックスを再利用するコスト最適化だ。
この修正が特に重要になるのは、Claude Codeのauto modeやbypassPermissionsを活用している環境だ。Claude Codeの権限バイパス脆弱性やauto modeの権限設計については既存の記事で詳しく解説しているが、v2.1.221はその流れで入った継続的な修正の一環だ。
権限モデルの根本的な問題はまだ残っている。GitHub Issue #30435では、gitコミット時の$()コマンド置換のたびに毎回承認ダイアログが出るという「承認疲れ」が40件以上のupvoteを集めている。「セキュリティのはずなのに、ダイアログを全承認する癖がついて意味をなさなくなる」という指摘だ(出典: GitHub Issue #30435)。個別の脆弱性を塞ぐ作業と、権限モデル全体の設計改善は別の問題として並走している。
その他の改善:Windows起動高速化とstatsパネル
機能面では小粒だが実用的な改善もある。
Windows起動の高速化: プロセス作成時刻の取得をPowerShellスポーンからネイティブのkernel32直接呼び出しに変更した。エンドポイントセキュリティツールがpowershell.exeをゲートしている企業環境で、起動時に余分な確認ダイアログが出なくなる。
statsパネルの改善: トークンカウントにキャッシュトークン(input/output/cache read/cache write)の内訳が加算表示されるようになった。前週のアップデートでOpus 5が標準化されてコスト意識が高まっている中、キャッシュ効率を確認できる手段が増えた。
MCPのprint mode修正: -p(print mode)の最初のターン前に--mcp-configのMCPサーバーが接続されない問題を修正。ツール呼び出しがリテラルテキストとして出力されていたバグだ。VS Code 1.128とClaudeのマルチチャット機能を使って複数セッションを並行稼働させている場合も、この修正の恩恵を受ける。
プラグインの即時アクティベート: インストール済みのプラグインが安全と判断された場合に/reload-plugins不要で即時アクティベートされるようになった。プラグイン運用の摩擦が一つ減る。
v2.1.221が解決した問題と、まだ解決していない問題
今回のリリースの変更39件を整理すると、大きな方向性は「セキュリティの穴を塞ぎ、表示のノイズを減らす」ことにある。
解決した問題は明確だ。zshによる権限バイパスが塞がれ、sandbox環境での認証情報の扱いがmode: maskによって改善された。Focus Viewで長時間タスク中の画面の流れが軽くなった。Windowsユーザーの起動問題も対処された。
一方で解決していない問題がある。Focus ViewがアシスタントのテキストまでサイレントにDropするという動作(Issue #50894)は、機能自体の設計に関わる問題であり単純なバグ修正では解消しない。権限モデルの「承認疲れ」という構造的問題(Issue #30435)も継続している。WSL2のmanaged settings連携クラッシュ(Issue #80284)は企業環境への導入を妨げうる問題として残っている。
Claude Codeの年間経常収益(ARR)は2026年5月時点で推定80億ドルとされており(出典: clauder-navi.com、第三者推計・非公式)、ユーザー基盤の拡大に伴ってエッジケースの報告も増えている。Claude Codeのセキュリティ発表が示すように、Anthropicはセキュリティ修正を継続的なリリースで提供するスタイルを取っている。今回のv2.1.221もその一本として位置づけられる。
network.tlsTerminateの設定が必須。これなしでは本番の認証情報がsentinelとして外部に届き認証エラーになる- リポジトリの
.claude/settings.jsonに書いても動作しない(セキュリティ上の仕様)。user settingsまたは--settingsフラグを使うこと - macOSはファイルマスクが
denyにフォールバックする。環境変数マスクは動作する - WSL2でmanaged-settings.jsonを使う企業環境は、Issue #80284のバグを先に確認すること
Claude Codeのセキュリティ設定と権限モデルについてさらに詳しく知りたい方は、Claude Codeのdenyルール無効化脆弱性とClaude Code Security Guidanceも参照してほしい。
関連記事
- VS Code 1.128のClaudeマルチチャット対応:並列実行・フォーク・個別モデル選択
- Claude Code Opus 5標準化&サブエージェント深さ3復活|2026年7月第4週
- Claude CodeのAuto Mode権限設計
- Claude Codeのdenyルールが無効化される脆弱性
- Claude Code v2.1.214まとめ:権限バイパス修正・EndConversation・Fable 5恒久化
本記事の情報は2026年8月5日時点のものです。Claude Codeは頻繁にアップデートされるため、最新の仕様は公式チェンジログおよびGitHubリリースページを参照してください。記載のCVE番号・GitHubイシュー番号は執筆時点での公開情報に基づきます。本記事の情報に基づいてサンドボックス設定やセキュリティ設定を変更したことによって生じたいかなる損害についても、筆者は責任を負いません。設定変更は必ず公式ドキュメントと自身の環境を確認した上で行ってください。