デフォルトの権限の動作
Devin CLI は、機能性と安全性のバランスを取るために、ティア制の権限システムを利用します。デフォルトの動作は、現在のモードによって異なります。 各セルには、そのモードでそのツールが自動的に実行されるか (Auto、確認なし) 、承認を待つか (Prompt) が示されています:
Normal モード (デフォルト) では、読み取り専用の操作は自動承認されますが、書き込み操作とシェルコマンドの実行には明示的な承認が必要です。アクションを承認するたびに、1 回だけ許可するか、セッション中は許可するか、またはプロジェクトに対して永続的に許可するかを選択できます。
Accept Edits モードでは、ワークスペース内のファイル編集は自動承認されますが、シェルコマンドとワークスペース外への書き込みでは引き続き確認が表示されます。
Smart モードでは、Accept Edits と同様にワークスペース内の編集が自動承認され、その他のすべてのアクションは高速モデルによって判定され、明らかに安全な場合にのみ自動実行されます。それ以外の場合は通常どおり確認が表示されます。以下の Smart モード を参照してください。
Bypass モードでは、すべてのツール呼び出しが確認なしで自動承認されます。
Autonomous モードでは、OS レベルのサンドボックスによってアクセス可能な範囲が制限されるため、シェルコマンドとネットワークFetchは自動承認されます。一方、
edit/write ツールによる直接のファイル編集は、それらのツールがサンドボックスの外で動作するため、引き続き確認が表示されます。Autonomous は、OS レベルのサンドボックスがアクティブな場合にのみ利用できます。
Smart モード
Smart は、Accept Edits と Bypass の中間に位置するモードです。ワークスペース内のファイル編集は、Accept Edits と同様に自動承認されます。それ以外のすべてのアクション (シェルコマンド、Web Fetch、MCP ツール、ワークスペース外への書き込み) については、高速モデルが無人で実行しても安全かどうかを判断します。明らかに安全な場合はプロンプトなしで実行されます。安全でない場合や、モデルが判断できない、または利用できない場合は、通常の承認プロンプトが表示されます。Shift+Tab でSmartに切り替えるか、モードセレクターで選択するか、Smartモードで開始できます:
- パッケージのインストール (
npm install、pip install、cargo install、brew install、…) - 変更を伴う
git操作 (git statusなどの読み取り専用サブコマンドは引き続き対象です) rm、sudo、その他の破壊的なコマンドや権限昇格コマンドkubectl deleteおよび破壊的なクラウド CLI 操作 (aws、gcloud、az、terraform、…)- dotenv ファイル、鍵マテリアル、Git 設定、エージェント自身の設定を読み書きするすべての操作
独自のルールが引き続き最優先されます。Smart の判断は、既存のルールで判断されていない場合にのみ適用されます。そのため、Permissions の仕組みで説明しているとおり、
deny ルールは操作をブロックし、ask ルールは常に確認を求めます。組織レベルの拒否ルールと ask ルールも同様に影響を受けません。Smart モードは段階的に展開されているため、まだモードセレクターや
Shift+Tab による切り替えに表示されない場合があります。Autonomous モード
Autonomous は、--sandbox フラグと組み合わせて使う権限モードです。概念的には、これはおおむね「現在のワークスペースで編集を受け入れる」に、任意のシェルコマンドを実行する機能を加えたもので、どちらの動作も OS レベルのサンドボックス内に制限されます。サンドボックスがアクティブな場合:
- 利用できる権限モードはこれだけです。 サンドボックスのセッションでは、Normal、Accept Edits、Smart、Bypass は表示されません。Plan モードは引き続き利用できます。
- シェルコマンドとFetchは、確認なしで自動承認されます。 サンドボックスによって、それらが読み取り・書き込みできる範囲や、ネットワーク経由で到達できる範囲が制限されるためです。
editおよびwriteツールによるファイルの直接編集では、引き続き確認が求められます。 これらのツールはサンドボックス内ではなく CLI プロセス内で実行されるため、サンドボックスで制限できません。プロンプトでWrite(...)スコープを付与すると、以後のシェルコマンドがその場所に書き込めるよう、サンドボックスが動的に拡張されます。- セッションの途中で付与された
Write(...)スコープによって、以後のコマンドに対するサンドボックスの範囲が動的に拡張されます。 セッション途中のRead(...)承認はエージェント自身のツールにのみ影響します。Read(...)拒否ルールによって非表示になっているパスは、セッション全体を通して非表示のままです。
--sandbox (Autonomous が選択されます) を利用してください。書き込み可能なルート、拒否ルール、ドメインフィルタリングの詳細については サンドボックス設定リファレンス を、Enterprise 向けの制御については チーム設定 → サンドボックス強制 を参照してください。
権限 の仕組み
エージェントがツールを呼び出すと、同じ設定レベルで一致するルールは次のように解決されます。- 拒否ルール — 一致した場合、その操作はただちにブロックされます。
- Ask rules — 一致した場合、同等以上に具体的なコマンドまたは MCP の allow ルールも一致していない限り、確認を求められます。
- Allow rules — 一致した場合、その操作は確認なしで実行されます。
- Default — 一致するルールがない場合は、承認を求められます。
拒否ルールが常に優先されます。allow ルールがどれほど具体的であっても、一致する拒否ルールを上書きすることはありません。
特定の許可ルール
同じ設定レベルでは、特定のコマンドに対する allow が、より広範な ask に対する例外として機能します。例:git status は確認なしで実行され、その他のコマンドでは引き続き確認が求められます。両方のルールがコマンドスコープを使用する場合も同様で、完全一致のコマンドはプレフィックスよりも具体的であり、長いプレフィックスは短いプレフィックスよりも具体的とみなされます。
MCP ルールも同じ原則に従います。特定のツールはサーバー全体のルールよりも具体的であり、サーバー全体のルールはすべての MCP ツールを対象とするルールよりも具体的です。
この例外が適用されるのは、同一の設定レベル内に限られます。下位レベルの allow で、組織設定などより優先度の高いレベルの ask を上書きすることはできません。また、Read() や Write() のパス glob には適用されません。パスが ask ルールに一致した場合、より狭い範囲のパスの allow にも一致していれば、Devin は確認を求めます。
設定
設定ファイルのpermissions セクションに権限を追加します。
Windows では、ユーザー設定ファイルのパスは
~/.config/devin/config.json ではなく、%APPDATA%\devin\config.json (通常は C:\Users\<you>\AppData\Roaming\devin\config.json) です。詳しくは Configuration File を参照してください。- プロジェクト設定
- ユーザー設定
- ローカルオーバーライド
権限の構文
権限マッチャーには、スコープベース (アクセス可能なパス、コマンド、URL を制御) と、ツールベース (利用可能なツールを制御) の 2 種類があります。スコープベースの権限
Read(glob)
Read(glob)
ファイルの読み取り権限を制御します。glob パターンはファイルパスにマッチします。ディレクトリパスは、その配下のすべてのファイルに自動的にマッチします。
Write(glob)
Write(glob)
ファイルの書き込み/編集権限を制御します。
Exec(prefix)
Exec(prefix)
シェルコマンドの実行権限を制御します。指定したプレフィックスで始まるコマンドにマッチします。
Exec(git) は “git”、“git status”、“git commit -m ‘msg’” にはマッチしますが、“gitk” や “github-cli” にはマッチしません。プレフィックスは完全な単語として一致する必要があります。Fetch(pattern)
Fetch(pattern)
URL パターンを使って HTTP fetch 権限を制御します。URL パターンは WHATWG URL Pattern 標準に従います。
domain: の省略記法は、完全一致するドメイン上の任意のパスにマッチします。ツールベースの権限
ツール名で一致させることで、ツール全体を制御できます:read, edit, grep, glob, exec
MCP ツールの権限
MCP サーバー上のツールへのアクセスを制御します:パスパターン
Read() と Write() では、以下の glob パターンをサポートしています。
使用例:
システム上のすべてのファイルを対象にしたい場合は、絶対パスのプレフィックス (例:
Read(/**)) を使用してください。先頭に / のない Read(**) は現在の作業ディレクトリからの相対パスとして解決されるため、そのディレクトリ配下のファイルにしか一致せず、他の場所にある絶対パス経由のファイルには一致しません。永続化オプション
セッション中にエージェントが許可を求めた場合、その選択をどのように保存するかを選べます。
Command のプロンプトでは、両方のスコープが明示的に提示されます。「はい、
<project> 内の <cmd> コマンドを常に許可する」を選択すると現在のプロジェクトに対する許可が保存され、「はい、すべてのプロジェクトで <cmd> コマンドを常に許可する」を選択するとユーザー設定に保存され、すべてのプロジェクトに適用されます。特定の URL またはドメインに対する Web Fetch のプロンプトには、フェッチを許可リストに一括追加する、同等の「はい、すべての Web Fetch を常に許可する」オプションが追加されます。
承認前に Command を編集する
Command の承認プロンプトは、単なる「はい」か「いいえ」かの選択ではありません。承認オプションに加えて、コマンドプロンプトでは次の操作を選択できます。MCPサーバーレベルの権限付与
特定のMCPツール (例: Figmaサーバー上のlist_issues) の許可を求められた場合、権限プロンプトには、より広いサーバーレベルの選択肢も表示されます。
これにより、信頼できるMCPサーバーに対して、各ツールを個別に承認しなくても、まとめてすばやくアクセスを許可できます。
優先順位
複数の権限ソースでルールが定義されている場合、以下の優先順位 (高い順) でマージされます。- 組織/チームの設定 (Enterprise の場合)
- セッションレベルの付与 (対話的な承認)
- プロジェクトのローカル設定 (
.devin/config.local.json) - プロジェクト設定 (
.devin/config.json) - ユーザー設定 (
~/.config/devin/config.json、Windows では%APPDATA%\devin\config.json)

