エージェント基盤・プロトコル

権限モデルとは|毎回確認は20回全部で止まり、ルールで判定すると12回に減った

権限モデルとはどういう仕組みなのか毎回確認するのと何が違うのか許可のルールはどう書けばよいのか

AIにコマンドを実行させるとき、全部許可するか、毎回確認するか、事前のルールで判定するかで扱いが分かれます。

実作業で出てくるコマンド20個に当てたところ、毎回確認は20回すべてで手が止まりました。ルールで判定すると12回まで減り、危険な操作は1つも通りません

この記事の要点

  • 権限モデルは何を実行してよいかを事前に決める仕組み
  • 全部許可すると危険な操作が6個そのまま通る
  • 毎回確認は危険操作を通さないが20回すべてで止まる
  • ルールで判定すると12回まで減り、危険操作は0個

毎回確認は20回全部で止まり、ルールで判定すると12回に減った

コマンド20個に3通りの出し方を当てました。全部許可では危険操作が6個通り、ルール判定では確認12回で危険操作は0個です。

権限モデルの出し方で何が変わるのかを、実際のコマンドで数えました。用意したのは実作業で出てくる20個で、うち6個は取り消せない操作です。

判定は実際に正規表現を当てて数えています。コマンドの一覧と許可のルールはコードに書いてあり、そこを変えれば結果も変わります。

javascript
// 事前に決めたルール。読み取りと検査は許可、それ以外は確認
const ALLOW = [/^ls/, /^cat /, /^grep /, /^git (status|diff)/,
               /^npm (test|run lint)/, /^node /];

const modes = {
  '全部許可':   (c) => ({ ask: false, run: true }),
  '毎回確認':   (c) => ({ ask: true,  run: true }),
  'ルールで判定': (c) => {
    const allowed = ALLOW.some((r) => r.test(c.cmd));
    return { ask: !allowed, run: true };
  },
};
text
実作業で出てくるコマンド 20個(うち取り消せない操作 6個)

出し方        確認を求める回数  無確認で通る危険操作
全部許可                   0回             6個
毎回確認                  20回             0個
ルールで判定                12回             0個

ルールで判定した場合に確認が必要なコマンド(12個)
        git add .
        git commit -m fix
        mkdir tmp
        cp a.txt b.txt
        sed -i s/a/b/ x.ts
        curl example.com
  危険  git push --force
  危険  rm -rf build
  危険  DROP TABLE users
  危険  aws s3 rm --recursive
  危険  kubectl delete ns
  危険  curl -X POST /pay

3通りの性格がはっきり分かれました。全部許可は止まらないが危険操作が6個通り、毎回確認は安全だが20回すべてで止まります

確認が多いと読まなくなる

毎回確認の弱点は数字に出ません。20回のうち14回は読み取りや検査で、危険でも何でもない操作です。安全な確認が続くと、内容を見ずに押すようになります

そうなると、危険な7回目が来ても同じ調子で通してしまいます。回数を減らすこと自体が、安全側に働くという理屈です。

残った12回の中身

ルールで判定した場合に残った12回のうち、6個は危険な操作です。残り6個は書き込みや通信で、危険とまでは言えないが自動で通したくないものになります。

この6個をさらに許可に回すかどうかが、次の調整点です。mkdir tmp のような作業用の操作は許可してよいかもしれません。

全部許可は危険を通し、毎回確認は全部で止まる。中間が要る。

確認で止まる回数無確認で通る危険操作全部許可毎回確認ルールで判定0少ない中くらい多い最も多いコマンド20個での判定。確認は全部許可0回・毎回確認20回・ルール判定12回。危険操作は6個・0個・0個。
図1 ── 出し方ごとの確認回数と、通る危険操作
出典Claude Code Docs「Configure permissions」2026-08-17 確認
Claude Code uses a tiered permission system to balance power and safety.
原文Claude Code Docs「Configure permissions」 この内容の有効期限2027-02-17

権限モデルとはどういう仕組みなのか

実行してよい操作と、してはいけない操作を先に書いておく仕組みです。書いたものが実行のたびに照合されます。

権限モデルは、AIが実行してよい操作を先に決めておき、実行のたびにそこへ照合する仕組みです。判断をその場のやりとりに委ねません。

粒度を細かくできる

Anthropicの説明では、やってよいこととやってはいけないことを正確に指定できる細かい粒度の権限が用意されているとされています。ツールの種類だけでなく、コマンドの中身まで指定できます。

たとえば git をまとめて許可するのではなく、git statusgit diff だけを許可するといった書き方になります。

段階のある仕組み

同じ文書には、力と安全のつり合いを取るために段階のある権限の仕組みが使われていると書かれています。読み取りは確認なし、シェルの実行は確認あり、といった具合に扱いが分かれます。

つまり最初から適当な既定値が置かれています。ゼロから設計しなくても、危険な側だけ調整すれば動きます。

サンドボックスとの違い

似た仕組みに、実行環境の側で触れる範囲を制限するものがあります。権限モデルが「実行してよいか」を判定するのに対し、そちらは「触れられるか」を物理的に決めます。詳しくはサンドボックス実行の記事で扱っています。

余談 許可した記録が資産になる

運用していて役に立ったのは、どの操作を許可したかが設定ファイルに残ることでした。人が覚えている必要がなく、チームで共有もできます。逆に言えば、書いた覚えのない許可が増えていないかを定期的に見る必要もあります。

出典Claude Code Docs「Configure permissions」2026-08-17 確認
Claude Code supports fine-grained permissions so that you can specify exactly what the agent is allowed to do and what it can’t.
原文Claude Code Docs「Configure permissions」 この内容の有効期限2027-02-17

許可のルールはどう書けばよいのか

狭く始めて足していきます。評価の順序を踏まえないと、広い禁止が後の許可を打ち消します。

権限モデルのルールは、狭く書いて必要な分だけ足す順で組みます。広く開けてから塞ぐ方向は、塞ぎ漏れが表に出ません。

評価の順序を押さえる

先に仕組みを理解してください。Anthropicの説明では、ルールは禁止、確認、許可の順に評価されます

この順序には効き目があります。広い禁止を書くと、後から狭い許可を足しても打ち消されます。禁止の中に例外を作ることはできません

組み立てる順番

  1. 読み取りと検査だけを許可する。ここから始める
  2. 実際に確認を求められた操作を記録する。何が足りないかが分かる
  3. 頻度が高く安全なものを許可に足す。1つずつ足す
  4. 取り消せない操作を禁止に置く。許可の書き間違いに巻き込まれない

4番目が保険になります。評価の順序で禁止が先に効くので、許可を広く書きすぎても危険な操作は止まります

広い許可の落とし穴

前の節のルールでも、/^node / という許可を置いています。これは node で始まるあらゆるコマンドを通すので、任意のスクリプトを実行できてしまいます

許可を書くときは、その表現に何が当てはまるかを一度書き出してください。通したい1つだけでなく、通ってしまう全部を見ます。

禁止が先に効く。だから取り消せない操作は禁止側に置く。

取り消せる操作かいいえ禁止に置くはい確認を求められた回数が多いかいいえそのまま確認に回すはい許可に足す。当てはまる範囲を書き出すコマンド20個の判定では、ルールで確認が12回に減り、危険操作は0個だった。
図2 ── 許可を足すかどうかの判断
指示で禁じても止まらないシステムプロンプトに「危険なコマンドは実行しない」と書いても、守られたかどうかは実行後にしか分かりません。判定は設定側に置いてください。指示による制御の限界はガードレールの記事で、承認の設計はHITLの記事で扱っています。
出典Claude Code Docs「Configure permissions」2026-08-17 確認
Rules are evaluated in order: deny, then ask, then allow.
原文Claude Code Docs「Configure permissions」 この内容の有効期限2027-02-17

よくある質問

毎回確認するのがいちばん安全ではありませんか
危険な操作は通しません。ただし確認の回数が多いと、内容を読まずに押すようになります。回数を減らすこと自体が安全側に働く面があります。
ルールはどんな順で評価されますか
禁止、確認、許可の順に評価される作りが案内されています。禁止が先に効くので、広い禁止を書くと後の許可では例外を作れません。
許可を書き間違えるとどうなりますか
危険な操作が確認なしで通ります。広い許可ほど巻き込む範囲が大きいので、まず狭く書いて必要な分だけ足してください。
サンドボックスがあれば権限モデルは要りませんか
役割が違います。サンドボックスは触れる範囲を環境側で制限し、権限モデルは何を実行してよいかを判定します。両方置くと、判定を抜けた場合でも被害が抑えられます。

まとめ

  • 権限モデルは実行してよい操作を事前に決める仕組み
  • 全部許可では危険な操作が6個そのまま通った
  • 毎回確認は20回すべてで止まるので現実的でない
  • ルールで判定すると12回に減り、危険操作は0個

今日から始められること

  1. AIに実行させているコマンドを1週間ぶん書き出す
  2. そのうち取り消せない操作に印を付ける
  3. 読み取りと検査だけを許可するルールから始める
  4. 確認を求められた回数と内容を記録し、許可を足すかを判断する

実務で組んだ権限モデルのワークフローには、値段が付きます

同じ課題を持つ会社にとって、動いている設定は「作る時間」を買えるということです。ServiceDockは自作のワークフローやテンプレートを出品できるマーケットプレイスです。手数料や出品の流れは出品者向けページにまとまっています。

出品の仕組みを見る