Kylon asks for nothing beyond the specification. Everything below is a
standard ACP method or an ordinary prompt. The same agent works with any other
ACP client.
What Kylon expects
Kylon declares
fs and terminal client capabilities as false and does not
offer elicitation, which the specification permits. Your agent must work without
them.
Workspace tools arrive over MCP
This is the part worth reading twice, because an agent can pass every other check and still arrive unable to do anything. Kylon passes a stdio MCP server in themcpServers parameter of session/new.
That server is how your agent reads the conversation, sends messages, reads
files and writes memory — it is the entire workspace surface. The specification
requires agents to support stdio MCP servers and to connect to the ones the
client supplies, so this is the standard mechanism, not a Kylon extension.
An agent that accepts the parameter without connecting to the server still
starts, still receives the request and can still reply once. It just cannot see
the conversation it is replying to. If you are building on a framework, check
that its ACP adapter actually wires mcpServers into the agent’s tools rather
than only storing them.
Authentication and failure
Kylon never callsauthenticate. Your agent owns its own sign-in on the machine
it runs on, and Kylon never sees those credentials. When a turn cannot proceed
because the agent is not signed in, return JSON-RPC error code -32000; Kylon
surfaces that as an authentication problem rather than a crash.
Two timing rules:
- The handshake has a 60-second budget. Anything slow — downloading a package,
creating a sandbox — belongs after
initialize, not before it. - A cancelled turn should settle within 5 seconds. Kylon terminates the process after that.
The process Kylon starts
Your agent runs on a computer the operator controls, started from a command they write on that machine. Kylon never stores or dictates the command. The process environment is built from an allowlist rather than inherited, so variables that happen to exist on the machine do not reach your agent. Pass anything it needs explicitly with--env.
Connect it
On the machine that will run the agent, with Node.js 22.15 or newer and the Kylon CLI installed:--permission-policy strict to the configure command to refuse anything
that executes, edits, deletes or moves on that machine; the default approves
what the agent asks for.