AI 開發工具
Codex Python SDK 0.154、実行中のターンへの外部イベント挿入を可能にし、その指示権限を明確に制限
新しい `ExternalMessage` により、ツール、他のエージェント、アプリケーションのイベントを実行中の Codex ターンへ送信できる。同時に、その authority はユーザーや開発者の指示より低い tool-level として扱われる。履歴の読み込みやターン単位のサービスティア制御も追加されたが、アップグレードにはイベントストリーミングと hook 構造に関する互換性変更への対応が必要だ。

OpenAI は9月10日、`openai-codex` Python SDK 0.154.0をリリースし、エージェントシステムでは一般的でありながら扱いを誤りやすい要件に対応した。作業の開始後に、デプロイ通知、他のエージェントからの出力、外部アプリケーションのイベントを受信する機能だ。新しい `ExternalMessage` は `run()` や `turn()` の入力として使用できるほか、すでに実行中の通常のターンにも追加できる。同期クライアントと非同期クライアントの両方が対応し、各コンシューマーには独立したイベントストリームが提供される。
重要なのは、単に「割り込み」が可能になったことではなく、SDKがこれらの内容をユーザーメッセージに偽装しない点だ。外部メッセージには tool-level authority が付与され、操作を承認したり、元のタスクの権限を拡張したりすることはできない。アプリケーション側では、引き続きユーザー目標、サンドボックス、承認ポリシーを別途設定する必要がある。これにより、Slack通知、CI結果、マルチエージェント間の引き継ぎが、テキストの内容だけで意図せず高い権限を得るリスクは低くなる。ただし、内容そのものが信頼できるようになるわけではなく、プロンプトインジェクション対策とデータ検証は引き続き統合側の責任となる。
0.154.0ではさらに、`resume` と `fork` で `include_turns` を使用し、レスポンスに既存のターンを含めるかどうかを指定できるようになった。また、新規の単一ターンを対象とする `turn_service_tier` と、送信元の metadata も追加された。注意すべき点として、`include_turns=False` は返される履歴を減らすだけで、モデルのコンテキストを消去するものではない。後から追加された手動の turn handle では過去のイベントは再生されず、作業完了後に `TransportClosedError` を受け取る可能性もある。完全な記録が必要な場合は、代わりに `thread.read(include_turns=True)` を使用すべきだ。
アップグレードする利用者は、`HookMetadata` の handler が `.root` に移動したことや、一部の通知が汎用の `.params` から型付きフィールドへ変更されたことにも対応する必要がある。パッケージには対応するバージョン0.154.0のCLI runtimeが含まれている。バイナリを独自に指定する場合は、少なくともCLI 0.151.0が必要だ。今後は、外部メッセージが大量の並行処理下でどのように順序付け、重複排除、監査されるのか、そのセマンティクスを検証する必要がある。イベントが正常に届いたことを確認するだけでは不十分だ。