
この記事でわかること
Claude Codeのようにターミナルから使うAIコーディングエージェントには、いくつかのオープンソース実装が存在します。その中で「OpenCode」(https://github.com/sst/opencode )は、特定のAIベンダーに縛られずMCPやACPといった標準プロトコルにも対応している点が特徴です。この記事はGitHub公式リポジトリのREADMEを一次情報としつつ、実際にnpmパッケージをインストールし、この検証環境でCLIを動かしてみた記録です。
- この記事でわかること:OpenCodeが何をするツールで、Claude Codeとどう違うか。
- 実際に`npm i -g opencode-ai@latest`でインストールし、`--help`で確認できた全コマンド一覧。
- `build`/`plan`という2つの組み込みエージェントと、その裏にある許可(permission)ルールの実物。
- ACPサーバー・MCPサーバー管理・ヘッドレスサーバーなど、他ツールと連携するための仕組み。
- この検証環境のネットワークポリシー上、実際のチャット実行では何が起きたか。
OpenCodeとは:ターミナルで動く、ベンダーに縛られないAIコーディングエージェント
GitHubリポジトリの説明文は「The open source coding agent.」です。READMEによると、OpenCodeはターミナルでの利用を軸にしたAIコーディングエージェントで、ライセンスはMITです。npmパッケージ名は`opencode-ai`で、公式のインストールコマンドは`npm i -g opencode-ai@latest`のほか、curlによるワンライナーインストールやHomebrew、Scoop、Pacman、mise経由のインストールにも対応しています。
最大の特徴として挙げられているのが、Tabキーで切り替えられる2つの組み込みエージェントです。`build`エージェントはファイル編集やコマンド実行を含むフルアクセスの開発用エージェント、`plan`エージェントは読み取り専用でbashコマンド実行前に確認を求める、未知のコードベースを安全に探索するためのモードだとREADMEは説明しています。macOS・Windows・Linux向けのデスクトップアプリ(ベータ)も配布されており、CLI以外の使い方も用意されています。
実際にインストールして`--help`まで動かしてみる
この検証環境で`npm install opencode-ai@1.18.33`を実行すると、Linux x64向けのネイティブバイナリを含む`optionalDependencies`が解決され、`opencode --version`は`1.18.33`を返しました。続けて`opencode --help`を実行すると、`opencode`(TUI起動)、`opencode run [message..]`(非対話実行)、`opencode serve`(ヘッドレスサーバー)、`opencode web`(Web UI)、`opencode attach <url>`(起動中サーバーへの接続)、`opencode acp`(ACPサーバー起動)、`opencode mcp`(MCPサーバー管理)、`opencode providers`(プロバイダー・認証情報管理、`auth`という別名あり)、`opencode agent`(エージェント管理)、`opencode github`(GitHub Agent管理)、`opencode session`(セッション管理)といったサブコマンドが実際に一覧表示されました。
`opencode run`には`--model provider/model`形式でのモデル指定、`--continue`によるセッション再開、`--format json`での構造化イベント出力、`--attach`によるリモートサーバーへの接続といったオプションがあり、単発のCLIというより「ローカルまたはリモートで動くサーバーに、TUI・CLI・Web UIのいずれからでも接続できる」というクライアント・サーバー型の設計であることが、コマンド体系からも読み取れました。
権限モデル・ACP・MCP:他ツールと安全に繋ぐための仕組み
`opencode agent list`を実行すると、`build`エージェントに紐づく許可ルールがJSONで表示されました。実際の出力には`{ "permission": "*", "action": "allow", "pattern": "*" }`という既定の全許可ルールに加えて、`{ "permission": "doom_loop", "action": "ask" }`のように特定の挙動だけ確認を求めるルールや、`external_directory`(作業ディレクトリ外へのアクセス)についてはパターンごとに`allow`/`ask`を個別に設定できる仕組みが確認できました。README記載の`plan`エージェントの読み取り専用制約も、この同じ許可ルールの仕組みの上に実装されていると考えられます。
またOpenCodeは、Zed発の標準プロトコルであるAgent Client Protocol(ACP)のサーバーを`opencode acp`で起動でき、Model Context Protocol(MCP)サーバーの追加・一覧・OAuth認証・ログアウトも`opencode mcp`配下のサブコマンドとして用意されています。`opencode serve`が立てるヘッドレスサーバーは`--mdns`オプションでmDNSによるサービス検出にも対応しており、同一LAN上のスマホアプリなどからサーバーを見つけて接続する使い方も想定されているようです。
複数プロバイダー対応と、この環境で実際に躓いた点
`opencode models`を実行すると、Models.devが提供するカタログから実際にモデル一覧を取得でき、`amazon-bedrock/anthropic.claude-*`のようなAWS Bedrock経由のAnthropicモデルや、無料で使える`opencode/`名前空間のモデル群が一覧に含まれていました。`opencode providers list`では、認証情報として保存された値が0件である一方、`GITHUB_TOKEN`が設定されていれば GitHub Copilot、`AWS_ACCESS_KEY_ID`/`AWS_SECRET_ACCESS_KEY`が設定されていれば Amazon Bedrock を自動検出する、という環境変数ベースの認証検出が実際に動作していました。
一方で、`opencode/`名前空間の無料モデルを指定して`opencode run`を実際に試すと、`Error: Forbidden: request blocked: no rule or allowlist entry allows host "opencode.ai"`というエラーになりました。これはOpenCode側の不具合ではなく、この検証環境のネットワークポリシーが`opencode.ai`ドメインへの通信を許可していないためです。実際にチャットの応答を得るところまでは検証できませんでしたが、インストール・CLI構造の把握・モデルカタログの取得・認証情報の自動検出までは、この制限下でも問題なく動作することを確認できました。
まとめ
OpenCodeは、Claude Codeのようなターミナル型AIコーディングエージェントを、特定ベンダーに依存しない形でオープンソース実装したツールです。実際にインストールして`--help`や`agent list`、`providers list`、`models`といったコマンドを動かしてみると、`build`/`plan`という2つの許可ルールに基づくエージェント、ACP・MCPという標準プロトコルへの対応、Models.devカタログを介した複数プロバイダー対応、GitHub Copilotやbedrockの認証情報自動検出まで、README上の説明と一致する挙動を確認できました。
この検証環境ではネットワークポリシー上`opencode.ai`への通信が禁止されており、実際の会話応答までは試せませんでしたが、逆に言えば自分の手元で使う分にはAPIキーの用意さえできれば同じ手順でそのまま動かせるはずです。既にAnthropicやOpenAIのAPIキー、あるいはAWS BedrockやGitHub Copilotの契約を持っている場合は、追加コストなく試せる選択肢の一つになりそうです。
参考リンク
- OpenCode 公式GitHubリポジトリ(README・LICENSE)
- https://github.com/sst/opencode
- npmパッケージ(opencode-ai)
- https://www.npmjs.com/package/opencode-ai
- Agent Client Protocol(ACP)公式サイト
- https://agentclientprotocol.com
- Model Context Protocol 公式サイト
- https://modelcontextprotocol.io
- Models.dev(対応モデル・プロバイダーカタログ)
- https://models.dev
