Skip to content

Commit 0a9594b

Browse files
committed
docs: show all safety decision responses
1 parent e7d3d33 commit 0a9594b

1 file changed

Lines changed: 86 additions & 1 deletion

File tree

examples/tool_safety/DESIGN.md

Lines changed: 86 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -72,7 +72,92 @@ deny: 阻断
7272

7373
处理结果以结构化报告返回。例如被拦截时,调用方不会执行真实工具逻辑,而是收到 `safety_report`,其中 `blocked=true``decision=deny`,并包含命中的 `rule_id`、证据和修复建议。
7474

75-
完整 JSON response 示例:
75+
三类 decision 的完整 JSON response 示例:
76+
77+
### allow response
78+
79+
```json
80+
{
81+
"blocked": false,
82+
"categories": [
83+
"safe"
84+
],
85+
"decision": "allow",
86+
"elapsed_ms": 0.0,
87+
"expected_decision": "allow",
88+
"findings": [],
89+
"language": "bash",
90+
"required_rule_ids": [],
91+
"risk_level": "none",
92+
"sample": "examples/tool_safety/samples/safe_bash.sh",
93+
"sanitized": false,
94+
"scan_id": "manifest:030:safe_bash.sh",
95+
"summary": "No safety rules matched; execution is allowed by the current static policy.",
96+
"telemetry_attributes": {
97+
"tool.safety.blocked": false,
98+
"tool.safety.decision": "allow",
99+
"tool.safety.duration_ms": 0.0,
100+
"tool.safety.risk_level": "none",
101+
"tool.safety.rule_id": "",
102+
"tool.safety.sanitized": false,
103+
"tool.safety.scan_id": "manifest:030:safe_bash.sh",
104+
"tool.safety.tool_name": "safe_bash.sh"
105+
},
106+
"timestamp": "1970-01-01T00:00:00+00:00",
107+
"tool_name": "safe_bash.sh"
108+
}
109+
```
110+
111+
### needs_human_review response
112+
113+
```json
114+
{
115+
"blocked": false,
116+
"categories": [
117+
"process_execution"
118+
],
119+
"decision": "needs_human_review",
120+
"elapsed_ms": 0.0,
121+
"expected_decision": "needs_human_review",
122+
"findings": [
123+
{
124+
"column": 0,
125+
"decision": "needs_human_review",
126+
"evidence": "subprocess.run([\"python3\", \"--version\"], check=True)",
127+
"line": 3,
128+
"message": "Python process execution via subprocess.run requires review.",
129+
"metadata": {},
130+
"recommendation": "Review subprocess/os.system usage and prefer a constrained wrapper.",
131+
"risk_level": "medium",
132+
"risk_type": "process_command",
133+
"rule_id": "PY_PROCESS_EXECUTION_REVIEW"
134+
}
135+
],
136+
"language": "python",
137+
"required_rule_ids": [
138+
"PY_PROCESS_EXECUTION_REVIEW"
139+
],
140+
"risk_level": "medium",
141+
"sample": "examples/tool_safety/samples/subprocess_call.py",
142+
"sanitized": false,
143+
"scan_id": "manifest:036:subprocess_call.py",
144+
"summary": "Decision needs_human_review with medium risk from rules: PY_PROCESS_EXECUTION_REVIEW.",
145+
"telemetry_attributes": {
146+
"tool.safety.blocked": false,
147+
"tool.safety.decision": "needs_human_review",
148+
"tool.safety.duration_ms": 0.0,
149+
"tool.safety.risk_level": "medium",
150+
"tool.safety.rule_id": "PY_PROCESS_EXECUTION_REVIEW",
151+
"tool.safety.sanitized": false,
152+
"tool.safety.scan_id": "manifest:036:subprocess_call.py",
153+
"tool.safety.tool_name": "subprocess_call.py"
154+
},
155+
"timestamp": "1970-01-01T00:00:00+00:00",
156+
"tool_name": "subprocess_call.py"
157+
}
158+
```
159+
160+
### deny response
76161

77162
```json
78163
{

0 commit comments

Comments
 (0)