---
title: "权限模型 - Allow/Ask/Deny 三级权限体系"
description: "详解 Claude Code 的三级权限模型：Allow 自动放行、Ask 确认对话框、Deny 直接拒绝。权限规则的层级来源与优先级机制。"
keywords: ["权限模型", "Allow Ask Deny", "权限控制", "安全权限", "工具权限"]
---

{/* 本章目标：详解权限系统的设计 */}

## 三种权限行为

每一次工具调用，系统都会做出三种裁决之一：

| 行为 | 含义 | 典型场景 |
|------|------|---------|
| **Allow** | 自动放行，用户无感知 | Read 工具读取项目内的文件 |
| **Ask** | 弹出确认对话框，等待用户决定 | Bash 执行一条未知命令 |
| **Deny** | 直接拒绝，AI 收到"权限被拒"的反馈 | 尝试执行被禁止的命令 |

## 权限规则的层级

规则可以来自多个来源，优先级从高到低：

<Frame caption="权限规则层级（优先级从上到下递减）">
  <img src="/docs/images/permission-layers.png" alt="权限层级图" />
</Frame>

<Steps>
  <Step title="用户会话内设置">
    用户在当前对话中手动授权的（"对这个工具始终允许"）
  </Step>
  <Step title="项目配置">
    项目目录中的 `.claude/settings.json`，团队共享
  </Step>
  <Step title="用户全局配置">
    `~/.claude/settings.json`，跨项目生效
  </Step>
  <Step title="托管设置">
    企业管理员下发的策略，用户不可覆盖
  </Step>
  <Step title="默认规则">
    系统内置的基线规则
  </Step>
</Steps>

## 规则的匹配方式

权限规则不是简单的"允许/禁止某个工具"，它支持丰富的匹配条件：

- **工具名匹配**：`"tool": "Bash"` → 针对所有 Bash 命令
- **命令模式匹配**：`"command": "git *"` → 只针对 git 开头的命令
- **路径匹配**：`"path": "src/**"` → 只允许操作 src 目录下的文件
- **组合条件**：以上条件可以组合使用

## 权限模式

系统提供几种预设的权限模式，适应不同信任级别：

| 模式 | 适用场景 |
|------|---------|
| **Default** | 日常使用，敏感操作逐一确认 |
| **Plan Mode** | 探索阶段，AI 只能读不能写 |
| **Bypass** | 完全信任 AI，所有操作自动放行（需显式开启） |

## Denial Tracking

系统不仅记录"允许了什么"，还追踪"拒绝了什么"：

- 如果 AI 被连续拒绝多次同一类操作，系统会调整策略
- 这防止 AI 陷入"反复请求同一个被拒操作"的死循环
