-
Notifications
You must be signed in to change notification settings - Fork 6
Open
Labels
area/engine⚙️ Engine - 核心引擎⚙️ Engine - 核心引擎area/security🛡️ Security - 安全模块 (WAF, 权限)🛡️ Security - 安全模块 (WAF, 权限)priority/high🟠 P1 - 严重影响用户体验、频繁出现的问题🟠 P1 - 严重影响用户体验、频繁出现的问题size/medium📏 Medium - 1-3 天工作量📏 Medium - 1-3 天工作量status/needs-triage🔍 Needs Triage - 需要进一步评估🔍 Needs Triage - 需要进一步评估type/feature✨ Feature - 新功能请求✨ Feature - 新功能请求
Description
摘要
实现 Claude Code --permission-prompt-tool stdio 原生协议,支持运行时权限询问和响应,而不仅仅依赖 YAML AllowedTools 静态配置。
背景
cc-connect 的核心创新之一:使用 --permission-prompt-tool stdio 启动 Claude Code,解析 control_request 事件,通过 stdin 写入 control_response 实现双向权限协议。
当前 HotPlex:权限通过 YAML AllowedTools 静态配置,运行时无法询问用户。
// cc-connect 启动参数
args := []string{
"--permission-prompt-tool", "stdio", // 关键!
"--output-format", "stream-json",
"--input-format", "stream-json",
}
// 事件: {"type":"control_request","request_id":"xxx","request":{
// "subtype":"can_use_tool","tool_name":"Bash","input":{...}
// }}
// 响应: {"type":"control_response","response":{
// "subtype":"success","request_id":"xxx",
// "response":{"behavior":"allow","updatedInput":{...}}
// }}提案
-
新增事件类型(
event/events.go):EventControlRequestEventControlCancelRequest
-
新增消息类型(
types/message.go):type ControlRequest struct { RequestID string Request struct { Subtype string ToolName string Input map[string]any } } type PermissionResult struct { Behavior string UpdatedInput map[string]any Message string // deny 时的原因 }
-
改进 session 事件解析(
internal/engine/session.go):- 新增
control_request事件分支 - 同步等待 callback 返回 PermissionResult
- 写入 stdin
control_response
- 新增
-
新增权限模式:
permission-mode=ask(provider/claude_provider.go) -
WebSocket API(
internal/server/controller.go):POST /permission端点:接收权限决策- SSE/流式推送
control_request事件到客户端
影响文件
event/events.go- 新增事件类型常量types/message.go- 新增消息类型provider/claude_provider.go- 新增permission-mode=ask选项internal/engine/session.go- 新增control_request处理分支internal/server/controller.go- 新增权限响应 API
参考
- cc-connect:
agent/claudecode/session.gohandleControlRequest - 调研文档:
docs/research/cc-connect-compare-proposals.md
来源: cc-connect 竞品调研 | 分支: research/cc-connect-deep-dive
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
area/engine⚙️ Engine - 核心引擎⚙️ Engine - 核心引擎area/security🛡️ Security - 安全模块 (WAF, 权限)🛡️ Security - 安全模块 (WAF, 权限)priority/high🟠 P1 - 严重影响用户体验、频繁出现的问题🟠 P1 - 严重影响用户体验、频繁出现的问题size/medium📏 Medium - 1-3 天工作量📏 Medium - 1-3 天工作量status/needs-triage🔍 Needs Triage - 需要进一步评估🔍 Needs Triage - 需要进一步评估type/feature✨ Feature - 新功能请求✨ Feature - 新功能请求