Repository navigation
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Kimi MCP OAuth waits currently have no usable authorization entry while the tool is running. Kimi 2.5.3's
toolProgressToSessionUpdateonly forwards status text as a title-only ACP update; its custommcp.oauth.authorization_urlevent is not delivered. The status retitles the tool card, and the syntheticauthenticatetool's empty{}arguments also cause the adapter to prune the waiting row.This change binds progress to the opening Kimi
mcp__<server>__authenticatecall, retains that tool identity and shows its forwarded authorization status below the MCP row. The user can open the complete HTTPS URL explicitly in the system browser. It supports the Rust bridge'sinprogressspelling and Kimi's original versus sanitized server labels. Kimi continues to own its native~/.kimi-code/mcp.json, OAuth callback and reconnection; no configuration isolation or upstream custom event reception is assumed.Safety and lifecycle
codeg.kimiMcpOAuthas frontend-derived state. Strip it from incoming live events and snapshots; missing opening context fails closed. Parallel calls cannot borrow each other's authorization URL.Validation
Node 24.22.2, pnpm 11.9.0, based on current upstream
main(1bc86a301a7c46b3c88ef94402be285b2fbf38ec).pnpm test --maxWorkers=4— 769 files / 11,435 tests passed, exit 0.pnpm test src/lib/kimi-mcp-oauth.test.ts src/lib/snapshot-denormalize.test.ts src/components/message/activity/activity-rows.test.tsx src/contexts/acp-connections-context.test.tsx src/lib/adapters/ai-elements-adapter.test.ts src/i18n/messages.test.ts --maxWorkers=2— 491 tests passed.pnpm exec tsc --noEmit— passed, exit 0, including test sources.pnpm lint .— passed, exit 0.pnpm build— passed, exit 0; production compilation, TypeScript check and static export completed.git diff --cached --check— passed; staged/untracked review contains only the 20 intended source/locale/test files.The successful full suite emits jsdom navigation/canvas not-implemented stderr in existing tests. Node 26's unrelated localStorage incompatibility was reproduced and avoided by using CI's Node 24. Next's sandbox IPC stall was avoided by running the identical production build outside the sandbox. No unrelated product workaround is included.
The event regression and missing UI entry were observed failing before the fix. Additional regressions caught and verified fixes for the Rust status spelling, snapshot/late-event provenance, and Kimi server-label normalization. Interaction coverage runs the real provider → live runtime → adapter path, renders the real MCP activity row, clicks its link, and checks exact URL dispatch, no automatic opening, reconnect removal, native opener failure/retry, and cancellation/terminal cleanup. Only the OS/window opener boundary is stubbed. Independent review found no remaining Critical/Important issue.
Boundaries
No real Notion/Kimi account OAuth, actual system-browser launch, callback, or usable tools after real reconnection was exercised. Those remain NOT_RUN; no OAuth was initiated and no credentials were inspected. The separate connected Notion MCP document task is not evidence for this patched account flow.
The entry is intentionally unavailable when a refreshed/late client missed the original authenticate identity. Kimi's >64-character hashed/truncated qualified tool names also remain unsupported and fail closed, rather than treating arbitrary MCP calls as OAuth. No Rust source, unrelated failure, dependency, lockfile, build artifact or log is changed.