Skip to content

fix(acp): handle session/request_permission protocol for Gemini CLI 0.38.x#1043

Closed
codebit0 wants to merge 1 commit into
nextlevelbuilder:devfrom
codebit0:fix/acp-session-request-permission
Closed

fix(acp): handle session/request_permission protocol for Gemini CLI 0.38.x#1043
codebit0 wants to merge 1 commit into
nextlevelbuilder:devfrom
codebit0:fix/acp-session-request-permission

Conversation

@codebit0
Copy link
Copy Markdown
Contributor

Summary

  • Gemini CLI 0.38.x uses session/request_permission instead of permission/request before executing MCP tools
  • Without a handler, the JSON-RPC error was stringified as [object Object], causing all tool calls to fail silently
  • Add handleSessionPermission() with nested outcome structure matching Gemini CLI's RequestPermissionResponseSchema

Changes

  • internal/providers/acp/types.goSessionRequestPermissionRequest/Response types, McpServer interface aligned to Gemini CLI wire format (array headers)
  • internal/providers/acp/tool_bridge.gosession/request_permission case in Handle(), handleSessionPermission() with perm-mode logic (proceed_always_server / proceed_once / cancelled)
  • internal/providers/acp/session.go — per-session cwd isolation, mcpServersFn wiring
  • internal/providers/acp/process.gomcpServersFn, promptTimeout fields
  • internal/providers/acp_provider.go — perm-mode wiring, MCP servers func option

Test plan

  • Gemini CLI ACP agent executes MCP tools without [object Object] error
  • approve-all mode: first tool call selects proceed_always_server, subsequent calls skip confirmation
  • deny-all mode: all tool calls return cancelled
  • approve-reads mode: read-type tools approved, write/exec cancelled

….38.x

Gemini CLI 0.38.x sends "session/request_permission" instead of
"permission/request" before executing MCP tools. Without a handler,
the JSON-RPC error was stringified as "[object Object]", causing all
tool calls to fail.

- Add SessionRequestPermissionRequest/Response types with nested outcome
  structure (proceed_always_server / proceed_once / cancelled)
- Add session/request_permission case in ToolBridge.Handle()
- handleSessionPermission(): approve-all selects proceed_always_server
  so subsequent bridge tool calls skip confirmation for the session
- Align McpServer type to Gemini CLI wire format (array headers, not object)
- Per-session cwd isolation and mcpServersFn wiring for ACP process
@codebit0
Copy link
Copy Markdown
Contributor Author

codebit0 commented May 1, 2026

Superseded by #1069 — same ACP changes (session/request_permission for Gemini CLI 0.38.x) plus full integrated branch. Closing to consolidate review.

@codebit0 codebit0 closed this May 1, 2026
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.

1 participant