Agent configuration contract
July 29, 2026 · View on GitHub
The canonical wire contract is the object emitted by
AgentConfigSerializer.serializeAgent()
under the agentConfig request field sent to /agent/* control-plane
endpoints. Its unit tests validate the supported agent, tool, guardrail,
handoff, memory, termination, callback, planning, and framework-passthrough
shapes.
All keys are camelCase; null/undefined fields are omitted rather than
sent as null. Nested agents, router, planner, and fallback serialize
recursively via the same function. The published
JSON Schema rejects unknown root agent fields while
allowing intentionally open JSON payloads (tool inputSchema/outputSchema,
metadata, guardrail/termination/handoff objects, and per-toolType config).
Framework-passthrough shapes
Two agent kinds bypass the general shape above and emit a minimal passthrough payload instead, since their real work happens entirely inside a local worker closure rather than being compiled by the server:
- Skill agents (
agent._framework === 'skill') emit{ name, model, _framework: "skill", ...rawSkillConfig }— the rawSKILL.md-derived config, spread onto the payload, so the server's skill normalizer can compile it. This can include fields outside the schema's declared property list; the schema'sadditionalProperties: falseis a statement about the native-agent shape, not a promise that every skill payload validates against it. - Claude Agent SDK passthrough (
agent.isClaudeCode) emits{ name, model, metadata: { _framework_passthrough: true }, tools: [{ name, toolType: "worker", description: "Claude Agent SDK passthrough worker" }] }— every other option on the agent is consumed locally by the worker closure and never reaches the wire.
Compatibility
The schema describes payloads emitted by the current serializer; it isn't
a promise that arbitrary server-side fields can be supplied by callers.
Extend the serializer, the schema, this reference, and serializer.test.ts
together when adding a new public agent field.
Next steps
Read agent definition fields for the authoring-side
options this maps from, and runtime for how a compiled
agentConfig gets submitted and executed.