6.16 --permission-prompt-tool - 处理权限提示的工具

第 6 章 · CLI 标志说明 · 第2部分:命令参考

概述#

--permission-prompt-tool 标志允许您指定用于处理权限提示的工具。这对于自定义权限处理流程和集成外部权限管理系统非常有用。

基本语法#

bash
复制
claude --permission-prompt-tool 工具名称>

使用场景#

1. 使用自定义权限工具#

bash
复制
# 使用自定义的权限处理工具claude --permission-prompt-tool my-permission-handler -p "生成代码" # 权限提示将由 my-permission-handler 工具处理

2. 集成外部权限系统#

bash
复制
# 集成企业权限管理系统claude --permission-prompt-tool enterprise-permission-manager -p "部署应用" # 权限决策将与企业系统集成

3. 自动化权限审批#

bash
复制
# 使用自动化审批工具claude --permission-prompt-tool auto-approver -p "生成代码" # 权限将根据预定义规则自动审批

4. 记录权限决策#

bash
复制
# 使用权限记录工具claude --permission-prompt-tool permission-logger -p "生成代码" # 所有权限决策将被记录

高级用法#

1. 与其他标志组合#

bash
复制
# 权限工具 + 权限模式claude --permission-prompt-tool my-handler --permission-mode manual -p "生成代码" # 权限工具 + 限制工具claude --permission-prompt-tool my-handler --allowedTools "Read""Grep" -p "分析代码" # 权限工具 + 指定模型claude --permission-prompt-tool my-handler --model opus -p "生成代码"

2. 自定义权限处理流程#

bash
复制
#!/bin/bash# custom-permission-flow.sh # 定义自定义权限处理工具exportPERMISSION_TOOL="my-permission-handler" # 使用自定义工具claude --permission-prompt-tool "$PERMISSION_TOOL" -p "生成代码"

3. 条件权限处理#

bash
复制
#!/bin/bash# conditional-permission.sh TOOL=$1 # 根据工具类型选择权限处理器case"$TOOL"in"Read"|"Grep")PERMISSION_TOOL="read-permission-handler";;"Write"|"Edit")PERMISSION_TOOL="write-permission-handler";;"RunCommand")PERMISSION_TOOL="command-permission-handler";; *)PERMISSION_TOOL="default-permission-handler";;esac claude --permission-prompt-tool "$PERMISSION_TOOL" -p "完成任务"

4. 权限审计#

bash
复制
#!/bin/bash# permission-audit.sh # 使用权限审计工具claude --permission-prompt-tool permission-auditor -p "生成代码"2>&1|tee audit.log # 分析审计日志grep"permission" audit.log |nl

实际应用示例#

示例 1: 企业权限管理#

bash
复制
#!/bin/bash# enterprise-permission.sh # 企业权限管理工具ENTERPRISE_PERMISSION_TOOL="enterprise-permission-manager" # 使用企业权限管理claude --permission-prompt-tool "$ENTERPRISE_PERMISSION_TOOL" -p "部署应用" # 权限决策将与企业的 IAM 系统集成

示例 2: 多级权限审批#

bash
复制
#!/bin/bash# multi-level-approval.sh # 第一级:自动审批claude --permission-prompt-tool level1-approver -p "生成代码"> level1.txt # 第二级:手动审批claude --permission-prompt-tool level2-approver -p "审查代码"> level2.txt # 第三级:高级审批claude --permission-prompt-tool level3-approver -p "最终批准"> level3.txt echo"多级审批完成"

示例 3: 权限决策记录#

bash
复制
#!/bin/bash# permission-logging.sh LOG_FILE="permission-decisions-$(date +%Y%m%d-%H%M%S).log" # 使用权限记录工具claude --permission-prompt-tool permission-logger -p "生成代码"2>&1|tee"$LOG_FILE" # 分析决策echo"权限决策统计:"grep -c "approved""$LOG_FILE"grep -c "denied""$LOG_FILE"

示例 4: 基于角色的权限#

bash
复制
#!/bin/bash# role-based-permission.sh ROLE=$1 # 根据角色选择权限处理器case"$ROLE"in"admin")PERMISSION_TOOL="admin-permission-handler";;"developer")PERMISSION_TOOL="developer-permission-handler";;"reviewer")PERMISSION_TOOL="reviewer-permission-handler";;*)PERMISSION_TOOL="default-permission-handler";;esac echo"使用角色: $ROLE"claude --permission-prompt-tool "$PERMISSION_TOOL" -p "完成任务"

自定义权限工具开发#

1. 基本权限工具结构#

bash
复制
#!/bin/bash# my-permission-handler.sh # 接收权限请求read -r PERMISSION_REQUEST # 解析请求TOOL=$(echo"$PERMISSION_REQUEST"| jq -r '.tool')ACTION=$(echo"$PERMISSION_REQUEST"| jq -r '.action') # 决策逻辑case"$TOOL"in"Read"|"Grep")DECISION="approved";;"Write"|"Edit")# 检查文件路径FILE=$(echo"$PERMISSION_REQUEST"| jq -r '.file')if[["$FILE"== /safe/* ]];thenDECISION="approved"elseDECISION="denied"fi;;"RunCommand")# 检查命令COMMAND=$(echo"$PERMISSION_REQUEST"| jq -r '.command')if[["$COMMAND"=="safe-"* ]];thenDECISION="approved"elseDECISION="denied"fi;; *)DECISION="denied";;esac # 返回决策echo"{\"decision\": \"$DECISION\", \"reason\": \"自定义权限规则\"}"

2. 集成外部权限系统#

bash
复制
#!/bin/bash# external-permission-handler.sh# 调用外部权限 APIPERMISSION_REQUEST=$1# 发送请求到外部系统RESPONSE=$(curl -s -X POST \-H "Content-Type: application/json"\-d "$PERMISSION_REQUEST"\https://permission-system.example.com/api/check)# 返回决策echo"$RESPONSE"

3. 基于策略的权限工具#

bash
复制
#!/bin/bash# policy-based-handler.sh POLICY_FILE=$1PERMISSION_REQUEST=$2 # 读取策略POLICY=$(cat"$POLICY_FILE") # 应用策略# 这里可以实现复杂的策略匹配逻辑DECISION=$(echo"$PERMISSION_REQUEST"| jq --argjson policy "$POLICY"' if .tool == $policy.tool and .action == $policy.action then "approved" else "denied" end ') echo"{\"decision\": $DECISION}"

权限工具类型#

1. 审批工具#

工具功能适用场景
auto-approver自动审批自动化流程
manual-approver手动审批交互式开发
multi-level-approver多级审批企业环境

2. 记录工具#

工具功能适用场景
permission-logger记录决策审计追踪
permission-auditor审计决策合规要求
decision-tracker追踪决策分析优化

3. 集成工具#

工具功能适用场景
enterprise-permission-manager企业集成企业环境
cloud-permission-handler云服务集成云原生应用
iam-integratorIAM 集成身份管理

最佳实践#

1. 选择合适的权限工具#

bash
复制
# 自动化流程使用 auto-approverclaude --permission-prompt-tool auto-approver -p "生成代码"# 生产环境使用 manual-approverclaude --permission-prompt-tool manual-approver -p "部署应用"# 企业环境使用 enterprise-permission-managerclaude --permission-prompt-tool enterprise-permission-manager -p "完成任务"

2. 记录权限决策#

bash
复制
#!/bin/bash# log-decisions.sh LOG_FILE="permissions-$(date +%Y%m%d-%H%M%S).log" claude --permission-prompt-tool permission-logger -p "生成代码"2>&1|tee"$LOG_FILE" echo"权限决策已记录到 $LOG_FILE"

3. 实现策略检查#

bash
复制
#!/bin/bash# policy-check.shPOLICY_FILE="permission-policy.json"claude --permission-prompt-tool policy-based-handler -p "生成代码"\--permission-policy "$POLICY_FILE"

4. 定期审计权限#

bash
复制
#!/bin/bash# audit-permissions.sh # 使用权限审计工具claude --permission-prompt-tool permission-auditor -p "完成任务"> audit.txt # 分析审计结果grep"denied" audit.txt |wc -l

常见问题#

Q1: 如何创建自定义权限工具?#

A: 创建一个脚本或程序,接收权限请求并返回决策。参考上面的示例代码。

Q2: 权限工具的输入输出格式是什么?#

A: 输入通常是 JSON 格式的权限请求,输出是 JSON 格式的决策。

Q3: 可以同时使用多个权限工具吗?#

A: 不可以。每次只能指定一个权限工具。

Q4: 权限工具失败会发生什么?#

A: 通常会回退到默认的权限处理方式。

Q5: 如何测试权限工具?#

A: 可以使用测试用例模拟权限请求,验证工具的决策逻辑。

与其他标志的组合示例#

1. 完整的权限管理流程#

bash
复制
#!/bin/bash# full-permission-flow.sh# 记录决策LOG_FILE="permissions-$(date +%Y%m%d-%H%M%S).log"# 使用权限记录工具claude --permission-prompt-tool permission-logger \--permission-mode manual \-p "生成代码"2>&1|tee"$LOG_FILE"# 分析决策grep"decision""$LOG_FILE"

2. 企业集成流程#

bash
复制
#!/bin/bash# enterprise-integration.sh # 使用企业权限管理工具claude --permission-prompt-tool enterprise-permission-manager \ --permission-mode auto \ -p "部署应用" # 权限决策将与企业系统集成

3. 多级审批流程#

bash
复制
#!/bin/bash# multi-level-flow.sh# 第一级:自动审批claude --permission-prompt-tool level1-approver -p "生成代码"# 第二级:手动审批claude --permission-prompt-tool level2-approver -p "审查代码"# 第三级:最终审批claude --permission-prompt-tool level3-approver -p "最终批准"