エージェントハーネスとは、言語モデルの出力を外部での実行、永続的な状態、検証可能なフィードバックに接地させることで、ステートレスな言語モデルを機能するエージェントへと変えるものである。エージェントハーネスとしてのコード:実行可能・検証可能・ステートフルなエージェントシステムに向けて は、あらゆるハーネスにとっての中心的な設計上の問いを「媒体」についての問い、すなわちモデルとそのタスク環境を何がつなぐのかという問いとして捉え、その答えはコードであると論じる。コードは自然言語にはない仕方で、実行可能で、検査可能で、状態を持つからである。この説明によれば、これらは表記法としてのコードの性質ではなく、コードをハーネスのインターフェースとして機能させる性質である。実行可能性とは、モデルが何を意図したかをハーネスが検証できることを意味し、検査可能性とは、失敗を診断してフィードバックできることを意味し、状態を持つことは、エージェントのインタラクション履歴がステップ間で失われないことを意味する。
ポジション:コーディングベンチマークはエージェント型ソフトウェアエンジニアリングと噛み合っていない はこの用語をより狭く、2 つのオーケストレーション階層の一方として用いている。そこでのエージェントハーネスとは、ツールとやり取りする言語モデルであり、何らかのシステムプロンプトと参照できるコンテキストを持って単一のタスクに取り組むものである。一方の システムハーネス はその外側の層であり、より上位の目標を具体的なタスクに変換し、各タスクを 1 つ以上のエージェントハーネスに振り分け、それらが作用する環境を管理し、その出力をフィードバックに通す。この読み方では、「コーディングエージェント」と呼ばれる成果物の大半(この論文は Claude Code、Codex、Cursor Agent、SWE-Agent、OpenHands などを挙げている)は、この意味でのエージェントハーネスである。同じ論文は、エージェントハーネスをモデル、プロンプト、ツール、ループから構成される設定可能な実行器として扱い、周囲のシステムハーネスはそれを調整することも、ブラックボックスとして扱うこともできるとしている。
用法
このサーベイは、ハーネスとその内部で実行されるコードを区別している。コードはハーネスの内部にある実行可能な媒体であり、ハーネスは、どのコードを実行し、信頼し、永続化し、再利用し、将来のワークフローへと昇格させてよいかを決める、より大きなポリシー統制されたシステムである。この捉え方では、信頼性はモデルの判断やエージェントが作成した成果物だけでなく、人間が設計したポリシー、サンドボックスの境界、権限の階層、検証オラクル、監査ログ、人間によるレビューゲートにも依存する。
ハーネスのインターフェースにおけるコードには 3 つの役割があるとされる。推論のためのコードは、内部のロジックを検証可能な計算として外部化し、インタプリタ、記号ソルバー、実行トレースがそれを検査・洗練できるようにする。行動のためのコードは、高レベルの意図を、身体性を持つ環境、GUI、ソフトウェア、ツール利用の環境に接地した実行可能な操作へと変換する。ただしサーベイは、実行可能な行動コードは知覚、アフォーダンス推定、コントローラー、安全層へのインターフェースであって、それらに取って代わるものではないと強調している。環境モデリングのためのコードは、世界の状態、遷移のダイナミクス、フィードバック信号を、エージェントが実行・編集・照会できるプログラムの状態、リポジトリ、シミュレーター、テスト、ログを通じて表現する。
そのインターフェースの上には、サーベイが 5 つの相互作用するカテゴリーにまとめるハーネスの仕組みがある。長期にわたる実行を組織する計画。メモリとコンテキストエンジニアリング(何をアクティブなコンテキストに残し、何を要約へと圧縮し、何を永続的な外部ストレージへ退避させるかを決める状態管理の層として説明される)。ツール利用(補助的な能力ではなく、モデルの意図と外部システムとの間の統制されたインターフェースとして扱われる)。Plan–Execute–Verify ループ による制御。そして、ハーネス自体をどう測定し改善できるかを研究する ハーネスエンジニアリング である。
このサーベイはまた、ハーネスを単なるコンテキスト管理者やツール実行器としてではなく、安全を統制する調速機としても扱う。すなわち、提案された行動をリスクによって分類し、権限の階層を強制し、厳格な制約に違反する行動を拒否し、不可逆な遷移や外部に影響の及ぶ遷移には人間の承認を求める層である。その提案する構造は多層の権限モデルであり、閲覧、検索、静的検査、ログ分析のための読み取り専用の層、隔離されたワークスペース内でのローカルなパッチ適用、テスト実行、一時的な依存関係のインストールのためのサンドボックス内編集の層、そしてネットワークアクセス、認証情報、デプロイコマンド、パッケージの公開、破壊的なファイルシステム操作、Git 履歴の変更を含むフルアクセスの層からなる。著者らは、同じコマンドでも使い捨てのサンドボックスでは安全で本番リポジトリでは危険でありうるため、権限はツールの種類だけでなく、引数、環境の状態、データの機微性、予想される副作用にも依存すべきだと論じている。
このサーベイが安全性について行うもう一つの議論は、ヒューマン・イン・ザ・ループの制御を、ときおり挟まるプロンプトによる中断ではなく、ハーネスの永続的な状態にすべきだというものである。承認、却下、ポリシーの例外、レビュアーによる修正はいずれも、ハーネスの権限ルール、エスカレーションのポリシー、検証基準、将来のメモリ検索を更新すべきであり、重大な承認は、何が提案され、どんな証拠が示され、どんなリスクが明らかにされ、誰が決定し、どの責任の境界が変わったかを記録する、監査可能な状態遷移であるべきだとする。著者らはこれを実行可能な説明責任(executable accountability)と呼んでいる。
Gorinova らは、エージェントハーネスを測定についての議論に用いている。ハーネスはベンチマークが実際に採点する対象の一部であるため、モデル名だけを記したリーダーボードのエントリーは仕様が不十分だというのである。彼らは、単一の固定されたモデルについて複数のエージェントハーネスで Terminal-Bench のエントリーを再現し、正答率がおよそ 58% からおよそ 80% まで幅があることを示した。そしてモデルが固定されている以上、このばらつきはモデルの能力差では説明できず、プロンプト、ツールインターフェース、行動ループ、環境の扱い、リトライの挙動、ターミナルの慣習が測定対象の一部であることを示していると論じる。さらに、モデルは特定のツール利用の慣習の下で訓練または調整されている場合があるため、タスク固有の推論が始まる前から、ハーネスがモデルとよく合っていることも、合っていないこともありうると付け加えている。
LangChain の Harrison Chase は、この用語をモデルを取り巻くシステム一般ではなく、エージェント構築用ソフトウェアの階層における一つの位置を指すものとして使っている。エージェントフレームワーク、ランタイム、ハーネス――なんてこった! で彼は、エージェントハーネスを エージェントフレームワーク の上に置く。フレームワークの価値がその抽象化にあり、その下にある エージェントランタイム が本番向けインフラを提供するのに対し、ハーネスはデフォルトのプロンプト、ツール呼び出しについての明確な方針を持った処理、計画用ツール、ファイルシステムへのアクセスを追加する。つまり「必要なものがあらかじめ揃っている(batteries included)」。彼が挙げる例は LangChain 自身の Deep Agents であり、これは LangChain の上に構築され、「Claude Code の汎用版(general purpose version of Claude Code)」と説明されている。彼は Claude Agent SDK を同じ方向への Claude Code の一歩と読み、あらゆるコーディング CLI もある種のエージェントハーネスだと論じうることを認めている。彼は、この用語を考案したのは自分ではないこと、そしてその定義は 3 つの層の間の境界と同様に、まだ明確ではなかったことを述べている。
後に Vivek Trivedy が書いた LangChain の投稿 エージェントハーネスの解剖学 は、Chase の階層よりはるかに広い定義を提案している。「エージェント = モデル + ハーネス(Agent = Model + Harness)」、そして「モデルでないなら、それはハーネスだ(if you’re not the model, you’re the harness)」というものである。この説明では、ハーネスとはモデルそのもの以外のあらゆるコード、設定、実行ロジックである。すなわち、システムプロンプト、説明付きのツール、スキル、MCP サーバー、ファイルシステム、サンドボックス、ブラウザといった同梱のインフラ、サブエージェントの起動、ハンドオフ、モデルのルーティングといったオーケストレーションのロジック、そしてコンパクション、継続、lint チェックといった決定論的な実行のためのフックやミドルウェアである。この投稿は、生のモデルは、ハーネスが状態、ツール実行、フィードバックループ、強制可能な制約を与えるまではエージェントではないと論じる。Trivedy はこれを、境界の引き方として考えられる多くの方法の中で、自分の意見では最もすっきりしたものとして提示し、各構成要素を、モデルが単独ではできないことから逆算して導いている。永続的な状態のためのファイルシステム、汎用ツールとしての bash とコード実行、安全な実行と自己検証のためのサンドボックス、重みを超えた知識のためのメモリファイルと検索、コンテキストロット に対抗するための コンパクション と ツール呼び出しのオフロード、そして長期にわたる作業のための Ralph Loop と計画である。この投稿はまた、Claude Code や Codex のような製品はハーネスをループに含めた状態で事後学習されているため、モデルがそのハーネスに過適合しうるが、あるタスクに最適なハーネスが、モデルの訓練に使われたハーネスであるとは限らないとも論じている。
Anthropic 自身のドキュメントも、自社製品についてこの用語を同じ広い意味で使っている。Claude Code の仕組みを説明する中で、エージェント的ループは推論するモデルと行動するツールという 2 つの構成要素によって動いており、Claude Code はモデルの周囲にあってツールを提供し、モデルが見るコンテキストを管理する層であると述べ、これこそがエージェント的ハーネス(agentic harness)という用語の指すものだとしている。そのハーネスが回すループは、コンテキストの収集、行動の実行、結果の検証という、互いに溶け合った 3 つのフェーズとして説明されている。
オープンソースの OpenHarness プロジェクトも、README でこの用語を同じ広い意味で定義している。エージェントハーネスとは、LLM を包み込んで機能するエージェントにするための完全なインフラであり、モデルが知能を提供し、ハーネスが「手、目、記憶、そして安全の境界(hands, eyes, memory, and safety boundaries)」を提供する。README は「モデルがエージェントであり、コードがハーネスである(The model is the agent. The code is the harness.)」という一文で締めくくられている。このプロジェクトが実装するハーネスは、モデルが要求する各ツール呼び出しを権限チェックとライフサイクルフックに通してから結果をフィードバックするエージェントループを中心に構成されており、その周囲をツール、スキル、プラグイン、権限、フック、コマンド、MCP、メモリ、バックグラウンドタスク、マルチエージェント協調のためのサブシステムが取り囲んでいる。README の言葉を借りれば、モデルが何をするかを決め、ハーネスがそれをどうやるかを担う。