
# 权限
码道CLI可通过配置"permission"文件，管控码道CLI的执行权限，支持自动运行、提示用户审批以及禁止运行。
#### 配置路径
权限文件的配置路径：\~/.codeartsdoer/cli-data/storage/permission/global.json
#### 配置格式
权限配置格式如下所示。
```
[
  {
    "permission": "权限名称",
    "pattern": "*",
    "action": "权限策略"
  }
]
```
其中，"权限名称"请参考[表1]，"权限策略"请参考[表2]。
#### 权限策略配置参数
 表1权限名称 
| 权限                       | 说明                                                                                                                                                                                                                                                                                                                                   |
|:---|:---|
| edit                     | 所有文件修改，包括AI新建、修改文件或者批量修改代码时触发                                                                                                                                                                                                                                                                                                        |
| write                    | 写入文件                                                                                                                                                                                                                                                                                                                                 |
| deleteFile               | 删除文件                                                                                                                                                                                                                                                                                                                                 |
| bash                     | 运行Shell命令，匹配解析后的完整命令。例如AI执行"git status"、"npm install"、"python manage.py runserver"等命令时触发 bash命令的权限需要与"bash_mode"结合，表示沙箱模式下的白名单命令。"bash_mode"也需要在"\~\\.codeartsdoer\\cli-data\\storage\\permission\\config.json"文件中配置，"bash_mode"支持的配置模式请参考[表3]。 |
| webfetch                 | 获取URL，AI访问外部API、下载文件或者获取网页内容时触发                                                                                                                                                                                                                                                                                                      |
| external_directory_read  | 读取项目目录外的路径，AI读取"/etc/hosts"、"\~/.ssh/id_rsa"这类不在项目工作目录内的文件时触发                                                                                                                                                                                                                                                                        |
| external_directory_write | 修改项目目录外的路径，AI写入或者修改"/etc"、"\~/.bashrc"这类系统或用户配置文件时触发                                                                                                                                                                                                                                                                                 |
| dotfile                  | 修改点文件（以"."开头的配置文件），AI修改".gitignore"、".env"、".vscode"或者"settings.json"等隐藏配置文件时触发                                                                                                                                                                                                                                                      |
| doom_loop                | 工具调用重复循环保护，当同一工具，例如"read"以完全相同的输入被连续调用3次时触发，防止死循环                                                                                                                                                                                                                                                                                    |
   
 表2权限策略 
| 配置项   | 说明                                                                                                                                                                                                                                                                                                                                                                                                                                                                                 |
|:---|:---|
| allow | 直接运行                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
| ask   | 需要审批，当您配置ask时，将出现以下三个选项供选择： - Allow once，仅允许本次执行，下次遇到相同命令会再次询问。  - Allow always，本次会话中，此类命令将不再询问，直接执行。  - Reject，不执行此命令，继续对话。适合您认为有风险或不必要的操作。   |
| deny  | 禁止执行                                                                                                                                                                                                                                                                                                                                                                                                                                                                               |
   
![](https://support.huaweicloud.com/usermanual-cli/public_sys-resources/note_3.0-zh-cn.png)
- 在TUI开发模式下，默认在沙箱模式下运行，将返回"Allow once"、"Allow always"和"Reject"三个选项。
- 在CLI开发模式下，自动禁止执行，如果需要配置为运行模式，请配置为"allow"。
 
 表3"bash_mode"支持的模式 
| 模式           | 含义             |
|:---|:---|
| sandbox      | 在沙箱中执行（默认，最安全） |
| always_ask   | 所有命令都询问        |
| always_allow | 所有命令直接执行       |
   
#### 白名单配置示例
示例如下：
```
[
  {
    "permission": "bash",
    "pattern": "git *",
    "action": "allow"
  },
  {
    "permission": "bash",
    "pattern": "npm *",
    "action": "allow"
  },
  {
    "permission": "bash",
    "pattern": "ls *",
    "action": "allow"
  }
]
```
该示例包含3个JSON对象，支持AI自动执行git、npm、ls开头的所有命令。
