# OpenCodeの機能と実践的な使い方
🧰 AIエージェントに「何を許して、何を止めるか」を一行で決められたら安心しませんか。OpenCodeの組み込みツールと権限制御はまさにそれを叶えてくれます。
🏷️ タイトル: 組み込みツール+権限
🔗 URL:
📘 概要
OpenCodeのエージェントは、ファイル編集やシェル実行などを「ツール」を通じて行います。これらは標準で多数組み込まれており、さらに各ツールに対して許可・確認・拒否のポリシーを設定できます。安全性と利便性のバランスを設定ファイルだけで調整できるのが特徴です。
⚙️ 機能の説明
主な組み込みツールは次のとおりです。
・`bash`: シェルコマンドの実行(git や npm など)
・`edit`: 既存ファイルの厳密な文字列置換による編集
・`write`: 新規作成または上書き
・`read`: ファイル読み込み(行範囲指定も可)
・`grep`: 正規表現での検索
・`glob`: `**/*.js` のようなパターンでのファイル探索
・`webfetch` / `websearch`: Web取得・検索
・`lsp` / `apply_patch` / `skill` / `todowrite` / `question` など補助ツール
権限は `permission` フィールドで `allow`(自由実行)・`ask`(毎回確認)・`deny`(禁止)の3状態を指定します。`edit` の権限は `edit`・`write`・`apply_patch` の3つをまとめて支配する点に注意してください。
🛠️ 実践的な使い方
`opencode.json` の `permission` に `"edit": "deny"`、`"bash": "ask"`、`"webfetch": "allow"` と書けば、編集は禁止しつつ bash は都度確認、Web取得は自由、という運用ができます。
MCP由来のツールはワイルドカードでまとめて制御できます。`"mymcp_*": "ask"` のように書けば、そのサーバーの全ツールに確認を要求できます。
💡 ユースケース
本番に近いリポジトリでは `edit` を `deny`、`bash` を `ask` にしておくと、エージェントが計画や調査はできても、勝手にコードを書き換えたり破壊的コマンドを走らせたりしません。逆に使い捨ての検証ブランチでは全許可にして高速に回す、といった切り替えが容易です。
⚠️ 注意点
標準では全ツールが許可されているため、明示的に絞らないと制限はかかりません。`lsp` ツールは `OPENCODE_EXPERIMENTAL_LSP_TOOL=true`、`websearch`(Exa利用)は `OPENCODE_ENABLE_EXA=1` の環境変数が必要です。`edit` 権限が write/apply_patch まで及ぶ点は見落としがちなので意識しておきましょう。
#
OpenCode# #
AIエージェント#