OSC 7501はMitchell Hashimotoによって提案された新しいターミナルエスケープシーケンスで、アイドル、作業中、ユーザー入力待ち、完了、または失敗などの状態およびその理由をプログラムがターミナルに伝えることができます。このプロトコルはSuperlogicalおよびGhosttyプロジェクトから生まれましたが、特定の製品や言語に依存しない汎用的なターミナルネイティブな仕様として設計されています。ビルド、デプロイ、パッケージアップグレード、データ処理、コーディングエージェントなどの長時間実行されるターミナル作業において、プログラムがまだ実行中か、入力待ちか、完了したかを見失うことがよくあるという共通の不満を解決します。

このプロトコルはOSC(オペレーティングシステムコマンド)導入子であるESC ] 7501 ; の後にコロン区切りのkey=valueペアを続け、ESC で終端します。必須のキーはstateのみで、idle、working、done、blocked、errorのいずれかを取ります。オプションのキーには、マシンが読み取れる安定したプログラム名を指定するapp(例: terraform や claude‑code)、Base64 UTF‑8でエンコードされた1行の人間が読めるメッセージを指定するmsg、およびブロック理由をclarifyするkind(permission、question、authなど)があります。複数の同時活動を管理するプログラムは、スラッシュで区切られた階層的なIDを報告できます(たとえば、デプロイツールはルートでworking状態であり、us‑east/pushは40%の進行状況でworking、eu‑westは承認待ちでblockedと報告できます)。文法に合わないIDのレポートは無視され、未知のキーは安全にスキップされるため、プロトコルは堅牢で拡張性があります。

RexドキュメントからのOSC 7501プロトコルの構文と使用例のイラストレーション
OSC 7501プロトコルは、Rexで文書化されているように、ESC ] 7501 ; key=value ペアを使用してプログラムの状態を報告します。www.superlogical.com

この画像は、記事で説明されているように、プログラムの状態(アイドル、作業中、完了、ブロック、エラー)を報告するための端末エスケープシーケンスであるOSC 7501プロトコルのフォーマットを示しており、オプションのキーとしてアプリ名、メッセージ、ブロック理由を含みます。

OSC 7501は既存の擬似ターミナル経由で送信されるため、SSH経由、コンテナ内、PTYが利用可能なあらゆる場所で動作します。これにより、ウィンドウタイトルや画面内容を解析するヒューリスティックの脆弱性を回避し、各プログラムが個別の受信箱固有のAPIすべてと統合する必要がなくなります。古いOSC 9;4進行インディケータ(busy/not busyのみを伝達)と比較して、OSC 7501は詳細な状態とメッセージを提供します。libghostty、Rexターミナルエミュレータに既に実装が存在し、Terraform、Claude Code、Codex、Homebrewなどのプロジェクトには小さなプラグインまたはフォークを通じて追加されています。仕様はメカニズムを定義しますが、プレゼンテーションは各ターミナルに委ねられるため、ステータスがスピナー、アイコン、またはアプリ内インボックスとしてどのように表示されるかは、標準を採用する開発者にとって未解決の問題のままです。