PTYスクレイピングなしで複数のAIコーディングエージェントをプログラムから操作できる。acpx 0.6.0が2026年4月25日に公開された。
この記事でわかること:
- acpxが解決するPTYスクレイピングの課題
- 対応するエージェント一覧と主な機能
- v0.6.0で追加されたClaudeシステムプロンプト制御とセッション管理機能
- インストールと基本的な使い方
https://github.com/openclaw/acpx
AIコーディングエージェントをプログラムから使う際の問題
Claude CodeやCodexをスクリプトや別のAIエージェントから呼び出す場合、従来はPTY(擬似端末)セッションをスクレイピングする方法しかなかった。ターミナル画面の文字を読み取ってANSIエスケープシーケンスを除去するこのアプローチは、出力形式が変わるたびにスクリプトが壊れやすく、構造化データとして受け取ることもできない。
acpxはこの問題を解決するために作られた。Agent Client Protocol(ACP)という構造化プロトコルを通じてコーディングエージェントと通信するため、ツール呼び出しの結果、差分、思考内容をANSIスクレイピングなしに型付きメッセージとして受け取れる。
acpxが対応するエージェント
内蔵レジストリには以下のエージェントが登録されている。
claude→ Claude Code(Anthropic)codex→ Codex CLI(OpenAI)openclaw→ OpenClaw ACP bridgepi→ Pi Coding Agentgemini→ Gemini CLIcursor→ Cursor Agentopencode→ OpenCodecopilot→ GitHub Copilot
--agent オプションで任意のACP互換エージェントも指定できる。
主な機能
acpxは単なる呼び出しラッパーではなく、エージェントを長期間安定して動かすための仕組みを備えている。
リポジトリごとのスコープで永続セッションを保持するため、CLIを終了してもセッション状態が残り、次回起動時に再接続する。同一リポジトリ内で複数の名前付きセッション(-s backend、-s frontendなど)を並列実行することも可能だ。
プロンプトキューイングにより、エージェントが別のタスクを処理中でも次のプロンプトを積み上げられる。--no-wait で結果を待たずに処理を続行する「fire-and-forget」モードも使える。エージェントプロセスがクラッシュした場合は自動的に検出して再接続する。
v0.6.0の変更点
Claudeのシステムプロンプトをセッション内で変更できるようになった
最も実用的な追加が --system-prompt <text> と --append-system-prompt <text> フラグだ。これまでClaude Codeのシステムプロンプトを変更するとセッションを新規作成し直す必要があった。v0.6.0ではACPの _meta.systemPrompt を経由してセッションを保ったまま上書きまたは追記できる。値はセッション設定に永続化されるため、セッション再利用時も同じプロンプトが適用され続ける。
acpx claude --system-prompt "You are a senior security reviewer." "Review this PR"
このフラグはCodexや他のエージェントでは無視されるため、エージェントを切り替えても同じコマンドを使いまわせる。
古いセッションを一括削除する sessions prune
セッション記録はディスクに残り続けるため、長期間使っていると蓄積する。sessions prune コマンドで古いセッションを整理できるようになった。
acpx codex sessions prune --dry-run # 削除対象を確認
acpx codex sessions prune --older-than 7d # 7日以上前のセッションを削除
acpx codex sessions prune --include-history # イベント履歴ごと削除
--dry-run で削除される対象を事前確認してから実行できる。
組み込みエージェントの埋め込み向けAPIが追加
startTurn(...) ターンハンドルが追加され、acpxをライブラリとして組み込む場合に、ターミナル完了を待たずにリアルタイムイベントを別のストリームで観察したり、特定のターンをキャンセルしたりできるようになった。runTurn(...) との後方互換性は維持されている。
–no-terminal でACP terminalケーパビリティを無効化
--no-terminal フラグを付けると、新しいエージェントクライアントに対してACP terminalケーパビリティをアドバタイズしなくなる。ターミナルアクセスを必要としない自動化シナリオで余分なケーパビリティ交渉を省ける。
主なバグ修正
v0.6.0では多くの実用的な修正が入っている。
セッションのフォールバック・再利用時に session/set_config_option で設定した値(Codexの reasoning_effort など)が保持されなかった問題が解消された。--model フラグが既存の永続セッションに送信するプロンプトでも有効になった。
WSL環境での修正も含まれている。WSL上でWindows向け .exe エージェントを起動する際、wslpath でcwdを自動変換するようになり、session/new と session/load がパスを正しく受け取れる。
セキュリティ面では、キューとIPCソケットのディレクトリ権限がowner-onlyに強化された。また、OPENAI_API_KEY などの環境変数が存在するだけで意図しないログインフローが走る問題が修正されている。認証には明示的な ACPX_AUTH_* 環境変数またはconfig設定が必要になった。
インストールと基本的な使い方
npm install -g acpx@latest
インストール後、Claude Codeに指示を送る場合は以下のようにする。
acpx claude sessions new # セッションを作成
acpx claude "認証モジュールをリファクタリングして" # プロンプト送信
acpx claude status # セッション状態を確認
CodexとClaude Codeを並列で動かす場合は名前付きセッションを使う。
acpx codex -s bugfix "フラキーなテストを修正して"
acpx claude -s review "このPRのセキュリティレビューをして"
npmでインストールせず試す場合は npx acpx@latest codex "タスク" でも動く。
まとめ
acpxはPTYスクレイピングに頼らずClaude CodeやCodexをプログラムから制御したい場合のOSSの選択肢だ。v0.6.0ではClaudeのシステムプロンプトをセッション維持したまま変更できる機能と、セッション管理の改善が中心となった。アルファ版のため破壊的変更の可能性はあるが、エージェント間通信を自動化する用途では実用的な段階に入っている。