メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.qoder.com/llms.txt

Use this file to discover all available pages before exploring further.

Qoder CLI は各ツール呼び出しの前に権限を確認します。結果は常に次のいずれかです。
  • allow: ツールをすぐに実行します。
  • ask: インタラクティブセッションで確認プロンプトを表示します。
  • deny: ツール呼び出しをブロックします。
権限はファイルの読み取りと編集、Bash コマンド、Web fetch、MCP ツール、Subagent、その他の組み込みツールに適用されます。

権限モード

--permission-mode でセッションの既定動作を選択します。
qodercli --permission-mode default
qodercli --permission-mode accept_edits
qodercli --permission-mode plan
qodercli --permission-mode auto
ModeBest forBehavior
default通常のインタラクティブ作業安全な読み取りや内部アクションは自動実行できます。センシティブな操作は確認を求めます。
accept_edits日常的なコーディング作業ディレクトリ内の安全なファイル編集を自動承認します。Shell コマンド、外部アクション、センシティブなパスは通常のチェックを通ります。
planレビュー、調査、計画計画寄りの動作を維持します。Qoder はプロジェクトを読み取って分析できますが、書き込みは計画ファイルまたは明示ルールで許可された場合を除き承認が必要です。
autoプロンプトなしの自律実行確認プロンプトを出さず、許可または拒否に解決します。安全な読み取りツールと安全なワークスペース編集は自動承認され、リスクのある操作は拒否されるか、利用可能な場合は分類器で評価されます。
bypass_permissions信頼できるローカル実験のみほとんどの承認プロンプトをスキップします。一部の安全チェック、危険な Shell コマンド、ユーザー操作が必要なアクションは引き続き確認または拒否される場合があります。
dont_askプロンプトを出せない headless フロー確認しません。本来確認が必要な操作は拒否されます。
acceptEditsbypassPermissionsdontAsk などの互換 camelCase 値も使用できます。 非 default モードは信頼済みフォルダでのみ適用されます。現在のフォルダが信頼されていない場合、Qoder は default に戻ります。bypass_permissions はセキュリティ設定で無効化される場合もあります。

既定モードを設定する

永続的な既定値は settings の general.defaultPermissionMode で設定します。
{
  "general": {
    "defaultPermissionMode": "accept_edits"
  }
}
settings では defaultaccept_editsplanauto を使用してください。信頼済みセッションで bypass mode が必要な場合は、--permission-mode bypass_permissions で起動します。

Bypass モード

--dangerously-skip-permissions--permission-mode bypass_permissions のエイリアスです。
qodercli --dangerously-skip-permissions
このモードは、ワークスペースとタスクを信頼できる場合にのみ使用してください。すべての操作を無条件に許可するものではありません。

判定の流れ

Qoder は固定順で権限を評価します。
  1. まず deny ルールを確認します。
  2. auto モードでは、Qoder は必ず allow または deny に解決し、承認プロンプトを開きません。
  3. ask ルールとツール固有のチェックは、広い allow ルールより先に実行されます。
  4. 安全チェックは、広いルールや bypass mode でも中断できます。
  5. ツール単位の allow ルールとモード由来の自動許可が適用されます。
  6. 非インタラクティブセッションで結果がまだ ask の場合、deny に変換されます。
つまり、広い allow ルールがあっても、すべての操作が無音で実行されるわけではありません。危険な Shell コマンドは確認を求めることがあり、疑わしいパスはブロックされることがあります。

ルールの設定

永続ルールは settings ファイルに保存します。
~/.qoder/settings.json
${project}/.qoder/settings.json
${project}/.qoder/settings.local.json
settings.local.json はマシン固有の承認用で、通常は .gitignore に追加します。チーム共有ルールは通常、プロジェクト settings に置きます。 ルールは allowaskdeny に分かれます。
{
  "permissions": {
    "allow": [
      "Read(/src/**)",
      "Edit(/src/**)",
      "Bash(npm run test:*)"
    ],
    "ask": [
      "Bash(npm publish:*)",
      "WebFetch"
    ],
    "deny": [
      "Read(*.pem)",
      "Bash(rm -rf:*)"
    ]
  }
}
組織ポリシーで managed-only permission rules が有効な場合、ポリシー管理ルールのみが使用されます。

ルール構文

ルールは次の形式を使います。
FormMeaning
ToolNameツール全体に適用します。
ToolName(content)特定のパス、コマンド、agent type、またはそのツールが対応する固有の値に適用します。
*ツールレベルですべてのツールに適用します。
ReadEditWriteBashGrepGlobWebFetchWebSearchAgent、および mcp__github__create_issue のような MCP 名を使用します。 内容に括弧が含まれる場合はエスケープします。
{
  "permissions": {
    "allow": [
      "Bash(python -c \"print\\(1\\)\")"
    ]
  }
}
ToolName(*) はツール単位のルールとして扱われ、ToolName と同じです。

ファイルアクセスルール

Qoder は現在の workspace を主な作業ディレクトリとして扱います。--add-dir/add-dir コマンド、または permissions.additionalDirectories で追加の信頼済み作業ディレクトリを指定できます。
qodercli --add-dir ../shared
{
  "permissions": {
    "additionalDirectories": ["../shared"]
  }
}
パス付きの読み取りルールは Read(...) を使います。パス付きの書き込みルールは Edit(...) を使い、EditWriteNotebookEdit のファイル書き込みチェックをカバーします。同じパスへの Edit(...) allow ルールは読み取り権限も暗黙に許可します。 ファイルパターンは gitignore 形式で一致します。
PatternMeaning
/src/**ルールソースのルートを基準にしたパス。project/local settings ではプロジェクトルート、user settings では home ディレクトリ基準です。
~/Documents/**home ディレクトリ基準のパス。
//tmp/data/**システムの / から始まる絶対パス。絶対パスには二重スラッシュを使います。
*.secretルートなしのファイル名パターンで、任意の場所に一致できます。
例:
{
  "permissions": {
    "allow": [
      "Read(/src/**)",
      "Edit(/src/**)",
      "Read(~/Documents/specs/**)"
    ],
    "ask": [
      "Edit(/package.json)",
      "Read(~/Downloads/**)"
    ],
    "deny": [
      "Read(*.pem)",
      "Edit(/.git/**)",
      "Edit(//etc/**)"
    ]
  }
}
作業ディレクトリ内の読み取りは、deny または ask ルールに一致しない限り既定で許可されます。作業ディレクトリ内の書き込みは、パスが安全であれば accept_editsauto で自動承認されます。 一部のパスは、実行、認証情報、ツール動作を変える可能性があるため保護されます。例として .git.vscode.idea.husky、多くの .qoder 設定ファイル、.bashrc.zshrc などの shell 起動ファイル、Git 設定、.mcp.json.ripgreprc があります。通常のインタラクティブモードでは明示承認が必要で、auto モードではプロンプトではなく拒否されます。

Bash ルール

Bash(...) ルールは、完全一致コマンド、コマンド接頭辞、またはワイルドカードパターンに一致できます。
RuleMatches
Bash(npm run build)npm run build に完全一致します。
Bash(npm run test:*)npm run test と、npm run test で始まるコマンドに一致します。
Bash(git log *)glob 形式のワイルドカードで一致します。
Bash(git status)git status に完全一致します。
例:
{
  "permissions": {
    "allow": [
      "Bash(git status)",
      "Bash(git log:*)",
      "Bash(npm run test:*)"
    ],
    "ask": [
      "Bash(npm publish:*)",
      "Bash(git push:*)"
    ],
    "deny": [
      "Bash(rm -rf:*)",
      "Bash(sudo:*)"
    ]
  }
}
Shell の一致は保守的です。
  • denyask ルールは一般的な wrapper や環境変数プレフィックスを見通すため、Bash(rm -rf:*) はラップされた破壊的コマンドも捕捉できます。
  • 接頭辞やワイルドカードの allow ルールは、各トップレベルコマンド片が独立して許可されない限り、複合コマンドを無音で承認しません。
  • 一部の明確に読み取り専用と判断できる shell コマンドは、deny、ask、パスチェックの後で自動許可されます。
  • 破壊的削除や force push などの危険なコマンドは、広い allow ルールがあっても確認を強制できます。auto モードでは危険な Shell コマンドは拒否されます。
セッションを完全に信頼できる場合を除き、BashBash(*) のような広いルールは避けてください。残りの安全チェックを除けば、Shell ツール全体を承認するのとほぼ同じです。

Web と MCP のルール

Web ツールはツール単位のルールで制御できます。すべての web fetch に確認を求める場合は ask、セッションまたはプロジェクトで web access をブロックする場合は deny を使います。
{
  "permissions": {
    "ask": [
      "WebFetch"
    ],
    "deny": [
      "WebSearch"
    ]
  }
}
MCP ツールは完全修飾名を使います。
mcp__<server>__<tool>
対応する MCP パターン:
RuleMeaning
mcp__github__create_issue1 つの MCP ツール。
mcp__github__*github MCP server の全ツール。
mcp__githubgithub MCP server の全ツール。
mcp__*すべての MCP ツール。
例:
{
  "permissions": {
    "allow": [
      "mcp__context7__*"
    ],
    "ask": [
      "mcp__github__create_issue"
    ]
  }
}
MCP server 設定では、その server のツールに対して alwaysAllow も設定できます。1 回の実行で有効にする MCP server を限定したい場合は --allowed-mcp-server-names を使います。
qodercli --allowed-mcp-server-names context7,github

コマンドラインでの上書き

一時的なセッションにはコマンドラインフラグを使います。
qodercli --permission-mode accept_edits
qodercli --allowed-tools 'Read,Grep,Bash(git status)'
qodercli --disallowed-tools 'Bash(rm -rf:*),mcp__github__delete_repo'
qodercli --tools 'Read,Grep,Edit'
--allowed-tools--disallowed-tools は settings と同じルール構文を受け付けます。--tools はその実行で利用できる組み込みツールを制限し、一覧にない組み込みツールは拒否されます。

非インタラクティブセッション

Print mode、--prompt、その他の headless セッションでは、Qoder は承認プロンプトを表示できません。本来 ask になる操作は、その操作を許可するモードまたはルールがない限り拒否されます。 自動化では次を推奨します。
  • 必要なツール、パス、コマンド、MCP server に対して狭い allow ルールを設定します。
  • 信頼済み作業ディレクトリ内のファイル編集が必要な場合は accept_edits を使います。
  • 厳格に fail-closed にしたい場合は dont_ask を使います。
  • 広いツール実行が意図された信頼済み環境でのみ bypass_permissions を使います。