OpenCode: OpenCode Permission System

最終更新:2026-08-31

--- title: OpenCode権限設定とフォーマッタツール description: きめ細かい権限制御とコードフォーマッタの設定方法を学ぶ order: 15 lang: ja

権限設定はOpenCodeを安全に使用するためのコアであり、フォーマッタツールはコードスタイルの一貫性を確保します。

1. 学習内容


2. 3レベルの権限体系

説明 使用シーン
allow 直接許可 安全な操作、例:git status
ask ユーザーの確認が必要 リスクのある操作、例:ファイル編集
deny 直接拒否 危険な操作、例:rm -rf

3. グローバル権限設定

JSON
{
  "permission": {
    "edit": "ask",
    "bash": {
      "*": "ask",
      "git status *": "allow",
      "npm test": "allow",
      "rm *": "deny",
      "sudo *": "deny"
    }
  }
}

最後にマッチしたルールが優先。*ワイルドカードを前に、具体的なルールを後に配置。


4. エージェントレベルの上書き

JSON
{
  "permission": { "edit": "deny" },
  "agent": {
    "build": { "permission": { "edit": "ask" } },
    "review": { "permission": { "edit": "deny" } }
  }
}

5. フォーマッタツール

opencode.jsonで設定:

JSON
{
  "formatter": {
    "command": "prettier",
    "args": ["--write"]
  }
}
ツール 言語 設定
Prettier JS/TS/CSS/HTML "command": "prettier", "args": ["--write"]
Black Python "command": "black"
gofmt Go "command": "gofmt", "args": ["-w"]
rustfmt Rust "command": "rustfmt"

AIがファイルを修正 → フォーマッタが自動実行 → コードスタイルが統一。


6. セキュリティベストプラクティス

シーン 推奨設定
日常開発 edit: ask, bash: ask, write: ask
コードレビュー edit: deny, write: deny, bash: git読み取りのみ
CI/CD edit: allow, bash: allow(制限付き)
初心者モード すべての権限をaskに設定

❓ FAQ

Q ask権限は不便すぎますか?
A 最初は不便に感じるが、安全のためのコスト。信頼できる操作はallowに設定して確認を減らすことが可能。
Q フォーマッタの実行が失敗した場合?
A OpenCodeはタスクを継続。フォーマッタの失敗はワークフローをブロックしない。後で手動でフォーマット可能。

📖 まとめ


📝 練習問題

  1. 基本問題:グローバル権限を設定し、editとbashをaskにしてください。

  2. 応用問題:Bash権限にGlobルールを設定し、git操作を許可しつつ危険なコマンドを拒否してください。

  3. チャレンジ問題:Prettierをフォーマッタとして設定し、OpenCodeの修正後にコードが自動フォーマットされるようにしてください。

Web-Tutorial.com

Web-Tutorial 技術チーム

複数の開発者によって共同維持されているプログラミングチュートリアルプラットフォーム。各チュートリアルは専門分野の開発者が執筆・レビューしています。正確で信頼性の高いコンテンツを目指しています — 問題を見つけた場合はお知らせください。

100%