SNS運用を自動化しませんか?
ThreadPostなら、投稿作成・画像生成・スケジュール管理まで全てAIにお任せ。
51万行のコード流出が暴いた「ハーネス」の正体
2026年3月31日。
AnthropicのAIコーディングエージェント「Claude Code」のソースコードが流出した。
npmパッケージにソースマップファイルが誤って同梱されていた。
約51万行、1900ファイルが誰でも閲覧できる状態になった。
流出したのはAIモデルの重みや学習データではない。
エージェントを制御するための周辺コード、いわゆる「ハーネス」だ。
ハーネスの語源は馬具を指す。
手綱やくつわなど、強力だが予測不可能な動物を人間の目的に沿って動かすための装備一式だ。
馬は単体では強力だが、ハーネスがなければ農作業には使えない。
LLMも全く同じ構造を持っている。
生のモデルはただのテキスト生成器に過ぎない。
状態管理、ツール実行の制御、フィードバックループ、強制可能な制約を与えることで初めてエージェントになる。
モデルでなければすべてハーネス
LangChainは「モデルでなければハーネス」という明確な定義を打ち出した。
プロンプトも、ツール呼び出しのコードも、CIも、すべてハーネスに含まれる。
エージェントハーネスは内部的に2つの層で構成されている。
プログラムレベルハーネスとプロンプトレベルハーネスだ。
プログラムレベルハーネスはLLMの外側にあるコードやインフラを指す。
決定論的に動作し、システム全体の基盤となる。
プロンプトレベルハーネスはLLMのコンテキストウィンドウに入れて自然言語で制御する部分だ。
プログラムレベルのミドルウェアが、コンテキストウィンドウに何を入れるかを決定する。
ThoughtworksのBirgitta Böckelerは、ハーネスの制御をガイドとセンサーに分類した。
ガイドはエージェントの行動を事前に操舵する。
センサーは行動後に観察して自己修正を助ける。
それぞれに決定論的な方法と推論的な方法が存在する。
ハーネスエンジニアリングの3つの柱
2026年2月、「ハーネスエンジニアリング」という言葉が急速に広まった。
エージェントハーネスを設計・改善し続ける規律を指す。
ボトルネックは「コードを生成できるか」から移動した。
「実システムの中で信頼できる振る舞いをさせられるか」が焦点になっている。
ハーネスエンジニアリングには3つの柱がある。
コンテキスト設計、ガードレール、フィードバックループだ。
コンテキスト設計はモデルに何を見せるかの設計だ。
巨大な指示ファイルはタスクや関連ドキュメントを押しのけてしまう。
ガードレールは決定論的な制約でモデルの行動を制限する。
カスタムリンター、型チェック、構造テスト、サンドボックスが含まれる。
フィードバックループは行動後に検証し、自己修正を促す。
テスト自動実行やエージェント間レビューが該当する。
ハーネス改善による13.7ポイントのスコア上昇
ハーネスを変えるだけで明確な差が出る。
LangChainがTerminal Bench 2.0の総合ベンチマークで数字を出した。
モデルをGPT-5.2-Codexに固定したまま、ハーネスだけを改善した。
スコアは52.8%から66.5%へと13.7ポイント上昇した。
特に効果が大きかったのは「推論サンドイッチ」と呼ばれる手法だ。
LLMのAPIには、モデルにどれだけ深く考えさせるかの上限を設定するパラメータがある。
すべての工程を最も深いxhighで走らせると、処理時間が膨らんでタイムアウトが多発した。
スコアは53.9%に留まった。
計画と検証にはxhigh、実装にはhighという緩急をつけた配分にした。
その結果、66.5%を達成した。
Meta-Harnessはハーネス自体を自動で最適化する。
LawBenchの215クラスの法律テキスト分類で16ポイントの精度向上を達成した。
僕の書いた正規表現の分類器より100倍賢い。
Claude Codeを制御する具体的なガードレール構築
Claude Codeを業務で使う際、ローカル環境の保護が不可欠だ。
設定ファイルを直接編集し、セキュリティを固める。
デフォルト状態では、環境変数ファイルへのReadは禁止されている。
しかし、Glob、Edit、Writeは禁止されていない。
設定ファイルのpermissions.denyに制限を追加する。
Readだけでなく、Glob、Edit、Writeも塞ぐ。
Globを禁止しないと、ファイル一覧取得で環境変数ファイルの存在が漏れる。
EditとWriteを塞がないと、AIがファイルを書き換える権限を持ってしまう。
Bashコマンドによるcat、head、tail、grep、less、more、openも禁止リストに入れる。
secrets、key、pemなどの拡張子を持つファイルへのアクセスも遮断する。
ここまで読んだあなたに
今なら無料で全機能をお試しいただけます。設定後は完全放置でプロ品質の投稿を毎日生成。
サンドボックスとファイル保護の徹底
環境変数ファイルをGitにコミットしてしまう事故を防ぐ。
dotenvxを使用してファイルを暗号化する。
暗号化を実行すると、keysファイルが生成される。
暗号化後のファイルはGitにコミットしても安全な状態になる。
keysファイルだけは厳重に管理し、gitignoreに追加する。
実行時はdotenvxのrunコマンドを経由して暗号化されたファイルを読み込む。
Claude Codeは会話中に編集したファイルのバックアップを保存する。
保存先はfile-historyディレクトリだ。
放置すると数十MBに膨れ上がる。
毎日0時に自動削除するcron設定を追加する。
Claude Codeが実行するbashコマンドをOSレベルで隔離する。
設定ファイルのsandboxセクションでenabledをtrueにする。
ネットワークアクセスも許可ドメインのみに制限する。
allowedDomainsにgithub.com、api.anthropic.com、localhostなどを指定する。
リストに入っていないURLへのcurlなどは失敗する。
必要なドメインだけをホワイトリストとして追加していく。
フィードバックループとコンテキスト管理の自動化
oh-my-claudecodeプラグインを導入する。
プロンプト送信のたびにTDDモードが自動起動する。
新機能やバグ修正のコードを書く前に、必ずテストを先に書くよう促される。
Red、Green、Refactorのサイクルを回す。
トークン使用量が増えると、Claude Codeの判断精度が落ちる。
everything-claude-codeプラグインを使用して、コンテキストを定期的に自動クリアする。
COMPACT_THRESHOLD環境変数で閾値を制御する。
デフォルトの50回から25回に下げる。
PreToolUseフックにコマンドを追加し、EditやWriteのタイミングで実行する。
プラグインのバージョンが上がるとパスのハッシュ部分が変わるため、findコマンドで再確認する。
save-progress.shスクリプトを作成し、進捗を保存する。
PreCompactフックに追加し、コンパクト化の前に自動でチェックポイントを作成する。
統合知見:ローカル環境設定は最強のハーネスエンジニアリング
Claude Codeのローカル環境設定は、単なるセキュリティ対策に留まらない。
ハーネスエンジニアリングの3つの柱を体現している。
サンドボックス化や環境変数ファイルの隠蔽は、決定論的なガードレールだ。
エージェントに自由を与えすぎず、物理的にアクセス経路を断つ。
TDDモードの強制や進捗の自動保存は、フィードバックループを形成する。
行動後に検証し、自己修正を促す仕組みだ。
コンテキストの自動クリアは、コンテキスト設計そのものだ。
稀少なリソースであるコンテキストウィンドウを最適に保つ。
ローカル環境の構築は、最強のエージェントハーネスを作り上げる作業だ。
モデルの能力を最大限に引き出しつつ、暴走を未然に防ぐ。
しんたろーコメンタリー
ハーネスエンジニアリングという言葉の響きが気に入っている。
馬具という泥臭い比喩が、AI開発の現状を正確に表している気がする。
ローカル環境の.envファイルをAIに読まれる恐怖は、開発者なら誰でも一度は感じるはずだ。
dotenvxでの暗号化とサンドボックス化を組み合わせるアプローチは理にかなっていると思った。
Terminal Bench 2.0のスコアがハーネスの改善だけで13.7ポイントも上がったデータには驚いた。
モデルの選定ばかりに目が行きがちだが、周辺環境の整備が精度に直結する。
推論サンドイッチの「計画と検証はxhigh、実装はhigh」という配分は、人間のマネジメントにも似ている。
方針決定とレビューには時間をかけ、作業自体はサクッと終わらせる。
設定ファイルのフックを使って自動化を仕込む作業は、パズルを解くような感覚がある。
ただ、プラグインのアップデートでパスが変わる仕様は少し面倒に感じた。
FAQ
Q. Claude Codeのサンドボックス機能はデフォルトで有効になっていますか?
A. デフォルトでは無効になっています。設定ファイルのsandboxセクションでenabledをtrueに設定し、Claude Codeを再起動することで有効になります。
Q. dotenvxで暗号化した環境変数ファイルはGitにコミットしても安全ですか?
A. 暗号化されたファイル自体はコミットしても安全です。ただし、暗号化・復号に使用するkeysファイルは絶対にコミットせず、gitignoreに追加して厳重に管理してください。
Q. everything-claude-codeプラグインの自動コンパクト化の閾値は変更できますか?
A. COMPACT_THRESHOLD環境変数を使用して変更可能です。デフォルトは50回ですが、精度維持のために25回程度に下げる設定が利用されています。

この記事が参考になったら、ThreadPostを試してみませんか?
投稿作成・画像生成・スケジュール管理まで、全てAIにお任せできます。
ThreadPostをもっと知る
ThreadPost 代表 / SNS自動化の研究者
ThreadPost運営。Claude Codeで1人SaaS開発しながら、海外AI最新情報を開発者目線で発信中。
@shintaro_campon