Skip to content

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

概述

--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

    # 定义自定义权限处理工具
    export PERMISSION_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/* ]]; then
                DECISION="approved"
            else
                DECISION="denied"
            fi
            ;;
        "RunCommand")
            # 检查命令
            COMMAND=$(echo "$PERMISSION_REQUEST" | jq -r '.command')
            if [[ "$COMMAND" == "safe-"* ]]; then
                DECISION="approved"
            else
                DECISION="denied"
            fi
            ;;
        *)
            DECISION="denied"
            ;;
    esac

    # 返回决策
    echo "{\"decision\": \"$DECISION\", \"reason\": \"自定义权限规则\"}"

2. 集成外部权限系统

bash

    #!/bin/bash
    # external-permission-handler.sh
    # 调用外部权限 API
    PERMISSION_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=$1
    PERMISSION_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-approver
    claude --permission-prompt-tool auto-approver -p "生成代码"
    # 生产环境使用 manual-approver
    claude --permission-prompt-tool manual-approver -p "部署应用"
    # 企业环境使用 enterprise-permission-manager
    claude --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.sh
    POLICY_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 "最终批准"

基于 MIT 许可发布