すべての記事
MCPサーバーは繋がっているのに、ツールが0件で返る — 無人実行の権限劣化をツール表の差分で止める
資格情報が抜けてもMCPのハンドシェイクは成功し、tools/list は空配列を返します。例外が飛ばないまま実行が完走する構造と、期待ツール表との差分で無人実行を止めるpreflightの実装を、実測値つきで記録しました。
許可リストに書いた環境変数は誰の環境で展開されるのか — Managed MCP の実効ポリシーを指紋で確かめる
Managed MCP の allowlist・denylist に書いた環境変数参照の解決元が、起動時環境と managed-settings の env に変わりました。同じ設定ファイルが環境ごとに別のポリシーになる仕組みを手元で再現し、実効ポリシーを指紋で突き合わせる起動前チェックを組みました。
strictAllowlist で Claude Code サンドボックスの外向き通信を締める
Claude Code v2.1.219 の sandbox.network.strictAllowlist で自動化の外向き通信を締めた実践メモ。接続先を洗い出すスクリプト、失敗までの時間で拒否とDNSと回線を切り分ける実測、許可リストをホスト名で書くべき理由まで。
コミット済みのシンボリックリンクが worktree の外を指す — AI に並列作業を預ける前のリポジトリ点検
Claude Code 2.1.212 で、コミット済みのシンボリックリンクを worktree 作成時に辿ってリポジトリ外へ書きうる不具合が修正されました。パッチが塞いだのは辿りの側です。危険なリンクがコミットされている側を点検する監査スクリプトと、隔離の手順をまとめました。
auto モードの設定が、いつの間にか自分でも思い出せなくなっていた — 既定へ戻す claude auto-mode reset の使いどころ
夜間の自動運用を続けるうちに、auto モードの設定を少しずつ触り足していました。ある朝の違和感で、自分が何を変えたのか思い出せないことに気づきます。既定へ戻す claude auto-mode reset を基点にして設定を組み直した、個人開発の片付けの記録です。
headless の Claude Code を止めたのに、ビルドだけが生き残っていた — exit 143 を前提に停止処理を設計する
headless モードの Claude Code が Bash 実行中に SIGTERM を受けると、コマンドのプロセスツリーが孤児化していました。2.1.212 の修正で挙動は exit 143 に変わります。この契約を前提に、監督スクリプトと後片づけを設計し直す手順をまとめます。
プランモードを「読むだけ」と信じていた — 前提を機構で確かめ直す
Claude Code 2.1.212 で、プランモードがファイルを変更する Bash を許可プロンプトも canUseTool も通さず実行していた不具合が修正されました。前提が崩れていた期間に何が起きうるのか、手元で確かめる方法と、モード名に安全性を預けない設計をまとめます。
/fork と /subtask の使い分け — 分岐は手元から切り離し、委譲はセッションに残す
Claude Code 2.1.212 で /fork は会話をバックグラウンドセッションへ複製する挙動に変わり、従来のセッション内サブエージェントは /subtask へ移りました。2つの使い分けと、分岐を増やす前に決めておきたい上限の話です。
宣言したMCPサーバーが一覧から消えていた — 名前空間をベンダーと共有する前提で設定を組み直す
MCPサーバー名がベンダーに予約され、自分の .mcp.json の宣言が黙って無効になる。無人実行で気づけないこの欠落を、宣言と実体を突き合わせる preflight と接頭辞規約で落とす設計をまとめました。
承認したのは、私が読んだ文字列ではなかった — 確認プロンプトの中継を細工文字で検証する
チャットへ中継した確認プロンプトに双方向上書き文字やゼロ幅文字を混ぜて通す実験をしました。NFKC正規化では検知率が0%だった理由、日本語コミットメッセージを止めてしまった素朴な規則の失敗、見せる文字列と照合する文字列を分けて細工を全件止める実装までを記録します。
夜間に回した並列サブエージェントの記録が、追えなくなった — --forward-subagent-text で増えたログを絞り直す
サブエージェントのテキストと思考を stream-json へ流せるようになった一方で、無人実行のログ量は跳ね上がります。実測値をもとに、事後解析に効く記録だけを残す3層の保存方針と相関IDの設計をまとめました。
テーブルが「… 2,847 more rows」で切れていた朝 — 描画上限とトークン計上を切り離して、ツール出力を設計し直す
Claude Code 2.1.209 で 200 行超の markdown テーブルは先頭 200 行+残り件数の表示になりました。省略されるのは描画だけで、モデルは全行を受け取ります。この差を測り、ツール出力を集約型へ組み替える設計をまとめます。