You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
New built-in agent: fast_agent (evalstate's fast-agent, Apache-2.0), run as its own ACP server via uvx fast-agent-acp==0.8.3 — bringing the built-in roster to 20. The version is pinned (not @latest) so
the built-in launches the exact release whose ACP handshake was verified rather than a moving remote spec;
override with [agents.fast_agent] command = [...] to track a newer release. It is bring-your-own-model /
multi-provider (provider=None): a turn needs a provider key in the environment (ANTHROPIC_API_KEY / OPENAI_API_KEY / ...) or a fast-agent.secrets.yaml, which the agent advertises as its ACP authMethod.
ACP conformance is verified: it spawns, handshakes (agentInfofast-agent-acp v0.8.3, protocolVersion
1), and reaches a turn that cleanly reports Authentication required with no key. Like kimi / openhands
it is a conformance-verified seat whose full answering turn is gated on the user's own provider key.
Fixed
A config clone of an effort-capable built-in now keeps its reasoning-effort tier. Effort is a
capability of the launched ACP adapter, not the agent id, but the per-call effort dispatch keyed on the
agent id alone — so a base= clone (or a local backend= clone) of codex / claude_code / cursor / cline / kiro / junie got a new id, fell through the dispatch table, and had its requested tier
silently dropped to a no-op (effort_applied null) across every channel (the model[effort] model-id, the --thinking / --effort launch flag, the JUNIE_EFFORT env, and the effort / reasoning_effort config
options). The descriptor now records the built-in whose knob it inherits (AgentDescriptor.effort_base,
stamped when a clone reuses a built-in's launch command) and effort dispatches on effort_base or id, so a
clone resolves through the adapter it actually launches. Built-ins are unaffected (effort_base is None,
resolving by id); a clone that supplies its own raw command stays an honest no-op by design (arbitrary
argv — the lineage is never inferred from command[0]). Non-breaking; no config-schema change. Thanks to
Tony Stone (@Tasktivity) for reporting and fixing this in #7.