Skip to content

修复 local agent「始终允许」跨会话泄漏,限制为当前聊天会话生效#10

Draft
Copilot wants to merge 5 commits into
mainfrom
copilot/fix-permission-issue
Draft

修复 local agent「始终允许」跨会话泄漏,限制为当前聊天会话生效#10
Copilot wants to merge 5 commits into
mainfrom
copilot/fix-permission-issue

Conversation

Copy link
Copy Markdown
Contributor

Copilot AI commented May 21, 2026

当前行为中,一次点击「始终允许」会影响后续所有聊天会话;预期应仅在当前会话内生效。该 PR 将“始终允许”从进程级放行改为按 chat session 维度生效,并保留无会话标识场景的兼容路径。

  • 变更概览:按 chat session 限定审批范围

    • local_agent/src/connection.ts 中新增按 __chat_session_id 记录的会话级放行集合。
    • 危险命令审批前,优先判断当前请求是否已在对应 chat session 内被“始终允许”。
    • 连接建立/断开时统一重置本地会话审批状态与 sudo 密码缓存,避免状态残留。
  • 上下文透传:将 chat session 标识带到 local agent

    • root_agent/tools/local_agent.py_call(...) 中,将 tool_context.state["__chat_session_id"] 注入到下发给 local agent 的 args,供本地审批逻辑使用。
  • 兼容性处理

    • 对未携带 __chat_session_id 的请求,继续走现有连接内 fallback(sessionAlwaysApprove),避免旧路径立即失效。
# root_agent/tools/local_agent.py
chat_session_id = tool_context.state.get("__chat_session_id")
if isinstance(chat_session_id, str) and chat_session_id:
    args = {**args, "__chat_session_id": chat_session_id}
// local_agent/src/connection.ts
const chatSessionId = getChatSessionId(request)
const isSessionApproved = !!chatSessionId && alwaysApproveChatSessionIds.has(chatSessionId)
const isApproved = autoApprove || sessionAlwaysApprove || isSessionApproved

Copilot AI linked an issue May 21, 2026 that may be closed by this pull request
Copilot AI changed the title [WIP] Fix permission issue for local agent consent 修复 local agent「始终允许」跨会话泄漏,限制为当前聊天会话生效 May 21, 2026
Copilot AI requested a review from snowykami May 21, 2026 09:10
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: 权限问题

2 participants