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\. 审批工具1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
| 工具 | 功能 | 適用場景 |
|---|
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 "最终批准"1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121