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-integrator | IAM 集成 | 身份管理 |
最佳实践#
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 "最终批准"