Goal
Finish the Gemini CLI ACP bridge so agents can run on the Gemini AI Pro subscription path end-to-end, matching the feature parity of the Claude Max and Codex Max bridges.
Current state
bridge/gemini-bridge.ts skeleton (committed in bbc3f45) handles:
- Subprocess spawn with Windows CRLF
TransformStream
- ACP
initialize handshake (with required fs capability stub)
session/new creation
- Skip-authenticate-if-cached-creds-exist flow
- NDJSON Python-facing protocol (
ping / initialize / authenticate / new_session / shutdown)
What's missing:
prompt request handling — actually sending a user turn to Gemini and awaiting completion.
session/update streaming — propagating partial outputs back to the orchestrator.
- MCP tool relay via
mcpServers in newSession so agent tools work.
- Python-side provider
atn/providers/gemini_bridge.py mirroring claude_bridge.py / codex_bridge.py.
gemini_max provider entry in _KNOWN_PROVIDERS and friends.
Acceptance
- An agent configured with provider=
gemini_max, model=gemini-3-pro can complete a multi-turn task with at least one tool call.
- Token usage is reported in
Usage with the same disjoint-bucket convention as other bridges.
Notes
- ACP
loadSession: false for Gemini: cross-restart thread resume is not supported. Either inject history on every wake (see related issue) or document the restart-resets-context behavior.
Goal
Finish the Gemini CLI ACP bridge so agents can run on the Gemini AI Pro subscription path end-to-end, matching the feature parity of the Claude Max and Codex Max bridges.
Current state
bridge/gemini-bridge.tsskeleton (committed inbbc3f45) handles:TransformStreaminitializehandshake (with requiredfscapability stub)session/newcreationping/initialize/authenticate/new_session/shutdown)What's missing:
promptrequest handling — actually sending a user turn to Gemini and awaiting completion.session/updatestreaming — propagating partial outputs back to the orchestrator.mcpServersinnewSessionso agent tools work.atn/providers/gemini_bridge.pymirroringclaude_bridge.py/codex_bridge.py.gemini_maxprovider entry in_KNOWN_PROVIDERSand friends.Acceptance
gemini_max, model=gemini-3-procan complete a multi-turn task with at least one tool call.Usagewith the same disjoint-bucket convention as other bridges.Notes
loadSession: falsefor Gemini: cross-restart thread resume is not supported. Either inject history on every wake (see related issue) or document the restart-resets-context behavior.