OpenCode 2とは?モデルを選べるAIコーディングエージェントを解説

Posted at 2026 年 09 月 21 日

OpenCode 2は、AIコーディングエージェントとAIモデルを切り離したオープンソースのツールです。OpenAI、Anthropic、Google、Azure、Amazon Bedrock、OpenRouter、xAI、さらにOllamaやLM Studioで動かすローカルLLMまで、同じ環境から切り替えながら開発できます。

Claude CodeはClaudeを、CodexはOpenAIモデルを軸に設計されています。OpenCodeにはその軸がありません。どのモデルを使うかを設定で決められることが、そのまま設計思想になっています。

最新版のOpenCode 2では、ターミナルのCLIに加えてデスクトップアプリとWeb UIが公式に提供されています。ただしV1からインストール方法・MCPの設定形式・プラグインAPIが変わっているため、V1向けの手順をそのままなぞると途中で止まります。

この記事では、OpenCode 2のインストールからプロバイダー接続、Build / Planの使い分け、サブエージェント、Permission、MCP、ローカルLLMまでを順に扱います。

OpenCode 2は「プロジェクトの中で作業する」AIエージェント

チャット型のAIは、貼り付けたコードについて答えるだけです。一方でOpenCode 2は、開発中のプロジェクトそのものを読み、ファイルを書き換え、コマンドを実行します。こうしたツールをAIコーディングエージェントと呼びます。

具体的には、コードの読み取り、ファイルの作成と編集、シェルコマンドの実行、バグ原因の調査、テストの実行、実装計画の作成、サブエージェントへの委譲、MCP経由での外部サービス利用までを任せられます。

OpenCodeはオープンソースで開発されており、リポジトリはGitHub(anomalyco/opencode)で公開されています。

ターミナル・デスクトップ・Web UIの3つの入り口

CLIだけのツールではありません。同じエージェントに、3つの入り口が用意されています。

ターミナルで使う場合は、プロジェクトのディレクトリで opencode を実行します。デスクトップアプリはmacOS・Windows・Linux向けに配布されています。

Web UIは次のコマンドで起動します。

opencode pair

実行するとローカルURLと接続用の認証情報が表示され、ブラウザからエージェントを操作できます。

VS Code、Cursor、Zed、Windsurf、VSCodium向けの拡張や、GitHub・GitLabとの連携も提供されています。

接続できるAIプロバイダーとモデルの選び方

エージェントとモデルが分離しているという特徴は、この接続設定に表れます。

/connect でプロバイダーをつなぐ

OpenCodeを起動したら、次のコマンドでプロバイダーを追加します。

/connect

プロバイダーを選び、APIキーなどの認証情報を入力します。公式ドキュメントでは、ネイティブ対応としてOpenAI、Anthropic、Google、Azure、Amazon Bedrock、OpenRouter、xAIが挙げられています。加えてGitHub Copilot、Ollama、LM Studio、vLLMも利用できます。

接続後、モデルの選択は次のコマンドから行います。

/models

OpenCodeはmodels.devの一覧、プロバイダー統合、自分の設定ファイルの3つからモデル候補を組み立てます。そのため、同じOpenCode環境の中でモデルを切り替えながら開発できます。

モデル名には#でバリアントを付けられます。推論の強さやトークン予算を切り替える指定で、たとえば openai/gpt-5.2#high のように書きます。low high max がすべてのモデルで使えるわけではない点は、ドキュメントにも明記されています。

ChatGPT Plus / Proアカウントで認証する

OpenAIを接続する際、/connect の認証方法の選択肢にはAPIキーの手入力に加えて、ChatGPT Plus / Proアカウントでのログインが表示されます。選ぶとブラウザが開き、OpenAIアカウントで認証できます。すでにChatGPTを契約している場合は、APIキーを発行せずに始められます。

もちろん、OpenAI APIキーを直接登録する方法も選べます。

Claudeを安定して使うならAnthropic API

AnthropicのClaudeも /connect から設定します。

OpenCodeにはClaude Pro / Maxサブスクリプションを使う認証方法も用意されていますが、これはAnthropicによる正式サポートではありません。業務で継続的に使うなら、Anthropic APIキーを登録する方法のほうが確実です。

インストール方法(V1とパッケージ名が違う点に注意)

V1からインストール先のURLとパッケージ名が変わりました。ここを間違えるとV1が入ります。

インストールスクリプト

macOSとLinuxでは、次のコマンドが公式の推奨になっています。

curl -fsSL https://opencode.ai/v2/install | bash

npm / Bun

Node.js環境では次のコマンドを使います。

npm install -g @opencode/cli

Bunを使う場合は次のコマンドになります。

bun install -g --trust @opencode/cli

pnpmやYarnからのインストールにも対応しています。

Homebrew

macOSなどでHomebrewを使う場合は、V2用のtapを指定します。

brew install anomalyco/tap/opencode-v2

デスクトップアプリはcaskから入れられます。

brew install --cask opencode-desktop

デスクトップアプリ

公式ダウンロードページでは、macOS(Apple Silicon / Intel)向けのDMG、Windows x64向けのインストーラー、Linux向けの.debと.rpmが配布されています。

Windowsはパッケージマネージャー非対応

公式ドキュメントは、Windowsについて次のように書いています。

Windows package managers are not supported.

V1時代のChocolateyやScoopのコマンドは使えません。Windowsでは、公式サイトから配布されているスタンドアロンのCLIバイナリをダウンロードするか、npmを使います。

V1とV2の変更点まとめ

項目

V1

OpenCode 2

インストールスクリプト

https://opencode.ai/install

https://opencode.ai/v2/install

npmパッケージ

opencode-ai

@opencode/cli

Homebrew tap

anomalyco/tap/opencode

anomalyco/tap/opencode-v2

MCP設定の位置

mcp 直下にサーバー名

mcp.servers 配下

MCPの無効化

enabled

disabled: true

ターミナルクライアント設定

階層化された tui.json(c)

~/.config/opencode/cli.json に統合

起動からモデル選択までの最短手順

インストール後、作業したいプロジェクトへ移動します。

cd /path/to/project

続いてOpenCodeを起動します。

opencode

初回は /connect でプロバイダーを接続し、/models でモデルを選びます。ここまでで開発を始められます。

プロジェクト固有の前提(使っているフレームワーク、命名規則、テストの回し方など)は、AGENTS.mdなどの指示ファイルに書いておくとエージェントが参照します。

まずPlanで調べ、Buildで実装する

標準で用意されているPrimary Agentは、BuildとPlanの2つです。

Build — 標準のコーディングエージェント

Buildは通常の開発作業を担当します。ツールは既定で許可されており、環境ファイルの読み取りやワークスペース外へのアクセスだけが確認を求められます。

ログイン機能を実装して
このエラーの原因を調べて修正して

こうした指示から、実際のファイル編集やコマンド実行まで進みます。

Plan — 編集せずに調べるエージェント

Planは通常のプロジェクトファイルを編集しません。コードを調査し、実装方法を検討するためのエージェントです。頼めばOpenCodeのプラン用ファイルは書きますし、シェルコマンドは引き続きPermissionの制御を受けます。

このプロジェクトにOAuth認証を追加したい。
既存コードを調査して実装方法を考えて。

使い分けの理由

大きな変更をいきなりBuildに任せると、意図と違う方向に進んだまま差分が膨らみます。Planで調査させ、方針に納得してからBuildへ渡すと、やり直しのコストを差分が小さいうちに抑えられます。

サブエージェントに調査を切り出す

Primary Agentとは別に、作業を分担するSubagentを使えます。標準ではGeneralとExploreの2つが用意されています。

Generalは調査や複数ステップの作業を広いツール権限で処理します。ただし、さらに別のサブエージェントは起動できません。Exploreはコードやウェブの情報を読むだけで、ファイルは編集しません。

呼び出しは @ に続けて名前を書きます。

@explore 認証エラーがどこで処理されているか調べて

サブエージェントは親エージェントとは別のコンテキストで動きます。大規模なコード調査で親のコンテキストを埋めずに済むのが、切り出す実利です。

独自エージェントを作る

自分専用のエージェントも定義できます。プロジェクト単位なら .opencode/agents/<name>.md、全プロジェクト共通なら ~/.config/opencode/agents/<name>.md に置きます。

.opencode/
└─ agents/
   └─ reviewer.md

中身はフロントマター付きのMarkdownです。

---
description: コードの問題点をレビューする
mode: subagent
model: anthropic/claude-sonnet-4-5#high
permissions:
  - action: edit
    resource: "*"
    effect: deny
  - action: shell
    resource: "*"
    effect: deny
---

現在の変更内容をレビューしてください。
バグ、セキュリティ、リグレッション、不足しているテストを確認してください。

フロントマターで指定できるのは、役割を説明する description、primary / subagent / all から選ぶ mode、使用モデルを provider/model#variant 形式で書く model、権限ルールを順に並べる permissions、モデルの最大ステップ数を決める steps です。

エージェントごとにモデルを変える

エージェント単位でモデルを指定できることは、OpenCodeの特徴が実務で効く場面です。実装には高性能モデル、コード調査には高速で安いモデル、レビューには別ベンダーの高性能モデルという構成が組めます。

すべての作業を高価なモデルで回す必要はありません。レビューを実装と別ベンダーのモデルに任せると、同じモデルが自分の書いたコードを自分で承認する構図も避けられます。

Permissionでシェル操作を締める

エージェントが使える操作は、Permissionで制御します。指定できるアクションは次のとおりです。

アクション

対象

read / glob / grep

ファイルの読み取り・検索

edit

ファイルの編集

shell / execute

コマンドの実行

subagent

サブエージェントの起動

skill

スキルの実行

question

ユーザーへの質問

webfetch / websearch

ウェブの取得・検索

external_directory

ワークスペース外へのアクセス

<server>_<tool>

MCPサーバーのツール

効果(effect)は allow、deny、ask の3つです。allow は確認なしで実行、deny は拒否、ask は実行前に確認を求めます。

{
  "permissions": [
    { "action": "shell", "resource": "*", "effect": "ask" },
    { "action": "shell", "resource": "git status *", "effect": "allow" },
    { "action": "shell", "resource": "git diff *", "effect": "allow" },
    { "action": "shell", "resource": "git push *", "effect": "deny" }
  ]
}

この例では、シェルは既定で確認を挟みつつ、git status と git diff は素通しにし、git push は拒否しています。ルールは順序を持つリストとして評価されるため、広い条件と狭い条件を書く順番が結果を変えます。

AIエージェントにシェルを渡すなら、少なくともリモートへ push する操作と、破壊的な削除コマンドは ask か deny に倒しておくべきです。

MCPサーバーを足して外部サービスにつなぐ

AIエージェントから外部ツールやサービスを呼び出すための共通仕様を、MCP(Model Context Protocol)と呼びます。OpenCode 2はこれに対応しています。GitHub、データベース、Context7、社内システムなどをOpenCodeからそのまま操作できます。

CLIから追加する

ローカルMCPサーバーは次のように追加します。

opencode mcp add everything -- npx -y @modelcontextprotocol/server-everything

リモートMCPはURLを指定します。

opencode mcp add context7 --url https://mcp.context7.com/mcp

プロジェクトを横断して使いたい場合は --global を付けます。

opencode mcp add context7 --global --url https://mcp.context7.com/mcp

設定ファイルはmcp.servers配下に書く

設定ファイルに直接書く場合、V2では mcp.servers の下にサーバー名を置きます。

{
  "$schema": "https://opencode.ai/config.json",
  "mcp": {
    "servers": {
      "my-server": {
        "type": "local",
        "command": ["npx", "-y", "example-mcp-server"]
      }
    }
  }
}

V1のようにサーバー名を mcp 直下へ置く書き方は通りません。設定だけ残して接続を止めたいときは disabled を使います。

{
  "mcp": {
    "servers": {
      "my-server": {
        "type": "local",
        "disabled": true
      }
    }
  }
}

V1で使っていた enabled ではない点に注意してください。

リモートMCPのOAuth認証

リモートサーバーは既定でOAuthを使います。登録後、OpenCodeの /mcps を開いてサーバーを選ぶと、ブラウザで認可を済ませられます。

/mcps

CLIからも認証できます。

opencode mcp auth sentry

認証情報を削除するコマンドも用意されています。

opencode mcp logout sentry

ローカルLLMを同じ環境から使う

接続先はクラウドのAPIだけではありません。手元で動かすLLMも同じように扱えます。公式にサポートされているランタイムと既定のエンドポイントは次の3つです。

ランタイム

既定のエンドポイント

Ollama

http://127.0.0.1:11434

LM Studio

http://127.0.0.1:1234/v1

vLLM

http://127.0.0.1:8000/v1

機密性の高いコードはローカルLLM、それ以外はクラウドのモデル、という使い分けが同じOpenCode環境の中で完結します。

ただし、コーディングエージェントで効いてくるのは単純なコード生成の精度だけではありません。Tool Callingの安定性、指示への追従、長いコンテキストの処理、コードベースを自分で探索する力が揃って初めて、エージェントとして使えます。ローカルLLMを選ぶときは、まずTool Callingに強いモデルかどうかを確認してください。

ウェブ検索とコードベースを組み合わせて調べる

webfetch と websearch は、Permissionの対象アクションとして用意されています。エージェントにウェブを読ませるかどうかを、設定で決められるということです。

許可しておくと、次のような調査を1回の指示で回せます。

利用しているライブラリの最新仕様を調査して、
既存コードへの影響を確認して

調査専用のExploreサブエージェントでもウェブ検索は使えるため、親のコンテキストを汚さずに外部情報を集められます。

V1から変わった3つのBreaking Change

公式のMigration Guideは、意図的な変更を3つ挙げています。この3つ以外は、既存のサーバー設定フィールド、エージェント定義、コマンド定義、スキル、.opencode/ 配下のファイルがそのまま動くよう設計されています。

プラグインAPI

V2は新しいプラグインAPIを採用しました。V1向けのプラグインは、ファイルを移動したり設定名を変えたりするだけでは動きません。エントリポイント、フック、ツール、イベント、パッケージのexportをすべて移植する必要があります。

サーバーAPIとクライアント

サーバーAPIとクライアントの契約も変わりました。V2では @opencode/client パッケージを使い、エンドポイントとレスポンス型が更新されています。OpenCodeを外部アプリから操作している場合は、ここの移行が必要です。

ターミナルクライアントの設定

V1では階層化された tui.json(c) を使っていましたが、V2では ~/.config/opencode/cli.json の1ファイルに統合されました。初回起動時に自動で移行されます。ただしV2のクライアント設定はグローバルのみのため、プロジェクトごとの設定は引き継がれません。

なお、V1のスキーマでは受け付けられていたフィールドのうち、V2に対応する機能がないものは無視されます。

Claude Code・Codexとの違い

3つのツールはいずれも、コードベースを読み、ファイルを編集し、コマンドを実行できます。違いは、どのモデルを中心に設計されているかにあります。

ツール

設計の軸

モデルの選択

OpenCode 2

モデルに依存しない共通フロントエンド

複数プロバイダーとローカルLLMを切り替え

Claude Code

AnthropicのClaudeとの統合

Claudeが前提

Codex

OpenAIモデルとの統合

OpenAIモデルが前提

Codexも現在は単純なCLIではなく、オープンソースのエージェントハーネスとして提供され、CLI、IDE、SDK、app-serverへ展開されています。AGENTS.md、MCP、Skillsを組み合わせれば、Codex側でも高度な開発環境を構築できます。

したがって、機能の多寡で優劣が決まるわけではありません。エージェントとモデルを切り離しておきたいならOpenCode、特定ベンダーのモデルに合わせ込まれた挙動を取りたいならClaude CodeやCodex、という分かれ方になります。

OpenCode 2が向いている人・向いていない人

向いているのは、複数のAIモデルを使い分けたい開発者です。実装はOpenAI、レビューはClaude、軽量な調査は高速モデル、機密性の高い処理はローカルLLM、という構成を1つの環境から扱えます。

MCPとサブエージェントを組み合わせて、自分の開発環境を組み上げたい人にも向いています。BuildとPlanの下にExploreやReviewerを置き、GitHubやContext7、社内システムのMCPを足せば、OpenCode自体がAI開発環境のハブになります。

逆に、設定を触らずすぐ使い始めたい場合は、OpenCodeの自由度は手間として表れます。プロバイダー接続、モデル選択、Permission設計を自分で決める前提のツールだからです。特定のモデルで問題なく回っているなら、Claude CodeやCodexのほうが導入は速く済みます。

まとめ

OpenCode 2の価値は、機能の数ではなくモデルを固定しない設計にあります。エージェント側の作法(Build / Plan、サブエージェント、Permission、MCP)を一度覚えれば、その上に載せるモデルは後から差し替えられます。

モデルの勢力図は数か月単位で入れ替わります。開発環境ごと特定ベンダーに預けたくないなら、OpenCode 2から試す価値があります。まずは /connect で手持ちのAPIキーを1つつなぎ、Planでコードを読ませるところから始めてみてください。

参考リンク

DevpediaCode編集部

DevpediaCodeはWeb、AIなどプログラムに関する最新ITテーマの情報を発信するメディアです。

お問合せ下記のURLからお願いします。

https://devpediacode.com/contact