Skip to content

6.16 --permission-prompt-tool - 處理許可權提示的工具

概述

--permission-prompt-tool 標誌允許您指定用於處理許可權提示的工具。這對於自定義許可權處理流程和整合外部許可權管理系統非常有用。

bash
## 基本语法

    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 整合| 身份管理

bash
## 最佳实践

### 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 许可发布 | 永久导航