feat(server): add Kilo Code provider over ACP - #8027
Conversation
Kilo Code (the @kilocode/cli binary, `kilo acp`) speaks Agent Client Protocol v1 over stdio with load/resume sessions and a config-option model catalog. This wires it in as a built-in driver alongside the Cursor and Grok ACP drivers: driver + adapter + status probe + text generation on the shared ACP runtime, contracts settings, web/mobile presentation, docs, and mock-agent test coverage including an env-gated probe against a real install.
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
One UI finding on the web changes: the new NO_PROVIDER_MODEL_SELECTION fallback in resolveAppModelSelectionState also fires while the provider snapshot is still empty, which makes the two settings model pickers render an empty, unlabeled trigger and lets the source-control writer switch persist a non-routable instance id. Everything else (Kilo icon wiring, provider driver metadata, supportsCustomModels gating in ProviderModelsSection, capability filtering in the pickers) is consistent with the existing primitives and call-site conventions.
Posted via Macroscope — UI Consistency
ApprovabilityVerdict: Not approved Macroscope's review found this PR not approvable — This PR introduces a full Kilo ACP provider and cross-cutting changes to shared ACP lifecycle handling, permission policies, model/catalog dispatch, and web/mobile settings. The new production behavior and security-sensitive integration span server and clients, so human review is warranted. You can add or adjust custom eligibility rules. Learn more. |
There was a problem hiding this comment.
Reviewed the changed web UI surfaces (provider icon, provider settings sections, text-generation rows, model-selection helpers). One consistency issue: the new provider placeholder controls don't match the geometry of the picker triggers they stand in for.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
Reviewed the changed web UI surfaces (provider icon registry, provider settings cards/model sections, text-generation controls, and model-selection helpers). One consistency finding: the new placeholder buttons hand-copy ComposerControl's geometry instead of using that primitive.
Posted via Macroscope — UI Consistency
There was a problem hiding this comment.
Effect service conventions review of the new Kilo provider modules. Structure (subpath namespace imports, Context.Service usage in AcpSessionRuntime, make/layer shapes, dependency acquisition via yield*, no ManagedRuntime/runPromise in domain code) looks consistent with the conventions. Two error-construction spots derive the wrapper message from cause.message instead of from stable structural attributes.
Posted via Macroscope — Effect Service Conventions
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes using high effort and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit ac606f7. Configure here.



What Changed
Adds Kilo Code as a sixth built-in, Early Access provider over the official
kilo acptransport.kilo modelsprobe and resolves the provider default from live ACP stateKnown product boundaries are explicit: provider-side rollback and structured questions are unavailable; non-Full-access sessions disable project Kilo config/plugins; automatic text generation is unsupported.
Why
Kilo users can run their existing CLI subscription through T3 Code's local, remote, relay, and tunnel architecture without introducing a separate orchestration path. Provider-specific behavior stays at the ACP adapter boundary, while the shared orchestration and clients expose only behavior Kilo 7.4.23 can uphold.
Official references: Kilo CLI guide, Kilo CLI reference, Kilo 7.4.23.
UI Changes
Adds the official Kilo icon, provider settings/model states, Early Access presentation, and mobile catalog-readiness states. Before/after web evidence and the mobile verification note are attached to the PR. No motion or timing behavior was added.
Validation
stopAll, cancellation quarantine/no overlap, interrupted permission registration, notification-barrier recovery, stale-turn interrupt revalidation, and empty-catalog provider identitygit diff --checkkilo/openrouter/freeKilo's upstream first-run database migration can still collide when separate T3 processes initialize the same never-migrated Kilo data directory at exactly the same time. T3 bounds startup, retries typed initialization failures, cleans up every failed child, and fails closed; a transparent cross-process fix requires an upstream migration change or reliable cross-platform advisory locking.
Checklist
Implemented and reviewed with GPT-5.6 Sol and GPT-5.6 Luna in T3 Code through the Codex harness.
Note
High Risk
Touches provider orchestration, ACP session lifecycle/cancellation, permission auto-approval, and client dispatch/outbox paths. Bugs here can leak tools, drop work, or send prompts on stale models.
Overview
Adds Kilo Code as a sixth built-in, disabled-by-default provider over the official
kilo acptransport (CLI 7.4.23+). Users keep their existing Kilo subscription; T3 discovers models viakilo modelsand maps T3 runtime modes onto generated Kilo policies.The adapter is interactive-only: it opts out of automatic text generation (titles, git, change requests). Non–full-access sessions isolate project config/plugins. Rollback and structured questions are unsupported. Cancellation, startup, and stop paths are bounded; uncertain cancel quarantines the session instead of overlapping work. Permission identities are exact per-tool, and registration is atomic with interrupt so stale approvals cannot land after cancel.
Clients keep Kilo routing while the catalog is still loading, show “Checking models…”, and block send/outbox drain until a ready nonempty catalog exists. Stale Kilo model slugs heal to the live default rather than synthesizing ghost rows. Marketing, docs, and icons list Kilo alongside the other harnesses.
Reviewed by Cursor Bugbot for commit d07eefd. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add Kilo Code provider over ACP and exclude from text generation
kilowith a full ACP adapter in KiloAdapter.ts to spawn and manage Kilo CLI sessions.supportsTextGenerationto theServerProviderschema and markskiloasfalse, excluding it from background text generation like title generation.AcpSessionRuntime.promptandcancelin AcpSessionRuntime.ts to handle concurrent cancellation safely and support configurable transport/settlement timeouts.ProviderInstance.textGenerationtype changed to allownull; out-of-tree code assuming non-null will break forkiloinstances.resolveTextGenerationProviderfallback logic was replaced byresolveTextGenerationModelSelection.Macroscope summarized d07eefd.