Kero Automation
Use Kero's authenticated, project-scoped CLI to coordinate terminal panes and recognized coding agents. Keep layout creation, agent prompts, and raw terminal input as separate actions.
Check availability
- Require
KERO_AUTOMATION=1. If it is absent, explain that the command must run inside a newly opened Kero terminal. - Run
kero +pane protocolbefore a multi-step workflow. - Treat successful command output as JSON. Record returned
pane_idvalues; do not infer pane IDs from titles or screen position. - Stay within the invoking terminal's project. Kero intentionally rejects targets in other projects and windows.
Use kero +agent explain for the lifecycle and security contract, and use
kero +agent --help or kero +pane --help for complete syntax.
Supported agents
Use these exact values with kero +agent start --kind:
codex— Codexclaude— Claude Codegemini— Gemini CLIgrok— Grok Buildopencode— OpenCodecursor-agent— Cursor Agentaider— Aideramp— Amppi— Pi
Coordinate existing Kero agents
When a task involves an agent already running in another Kero pane, coordinate it through Kero instead of sending raw terminal input. The target can be any supported agent kind; both agents stay under the same project-scoped contract.
- Inspect
kero +agent listand select the target by its unique project-local alias. If the intended agent is ambiguous, ask the user instead of guessing. - Use
kero +agent promptfor a focused question, progress request, follow-up, or handoff. State what response or artifact the coordinating agent needs. - A submitted prompt is not a completed task. If the target is already working, its CLI decides whether to steer the active turn or queue the new prompt.
- Inspect
kero +agent get. Ifagent.authoritybecomesintegration, usekero +agent waitandkero +agent readto collect the result. Otherwise, read the returnedpane_idwithkero +pane readand inspect the actual project outcome; Kero does not infer lifecycle from terminal text. - If an integration reports the target blocked, surface the reason to the user. Do not send a follow-up that attempts to work around the blocker.
Delegate to another pane
Follow this sequence:
Inspect existing state with
kero +pane listandkero +agent list.Create one background pane unless the user explicitly selected an existing available shell:
kero +pane split --right --cwd "$PWD"Record the response's
pane_id. Do not start an agent in the invoking pane: the runningkerocommand temporarily makes that shell unavailable.Choose the agent kind requested by the user. If none was requested, prefer the current recognized agent's kind from
kero +agent get --current; do not silently switch to a provider with different credentials or permissions.Start the worker with a short, unique project-local alias:
kero +agent start tests --kind codex --pane PANE_IDstartreturns once Kero recognizes the requested foreground process. Its state iscreated; Kero does not inspect the CLI screen or wait for a provider-specific ready prompt.Send a bounded task with acceptance criteria. Do not add Kero lifecycle commands to the task; supported provider integrations report state directly:
kero +agent prompt tests --text "Run the focused tests, fix failures in scope, and verify the result."Check
kero +agent get tests. Ifagent.authoritybecomesintegration, wait without stealing focus, then inspect the terminal result:kero +agent wait tests --state done,blocked --timeout 1800000 kero +agent read tests --lines 160Kero does not infer progress from terminal text. If no lifecycle integration is active, inspect the target pane directly instead of waiting for a guessed state:
kero +pane read --pane PANE_ID --lines 160If a lifecycle integration reports the worker blocked, surface its reason to the user. If it reports done, independently inspect the claimed files or verification output before presenting the work as complete. Without such a report, determine the outcome from the pane and the actual project state.
If start, prompt, or wait fails or times out, use agent get to recover
the worker's pane_id, then inspect that pane before deciding what happened:
kero +agent get tests
kero +pane read --pane PANE_ID --lines 160
Use that output to diagnose startup, authentication, trust, or command errors. Do not answer an interactive approval or credential prompt on the user's behalf; report the blocker instead.
Reuse the same alias for follow-up prompts only while that recognized agent is still running. Use a new alias for a new worker.
Lifecycle and result reads
Never ask a worker model to report working, blocked, or done. Kero accepts
semantic state from native CLI lifecycle integrations and never classifies the
rendered terminal screen. done is the unseen presentation of integration-
reported idle, not a state the model must announce. For an agent without an
active integration, do not use agent wait as proof of progress or completion;
read its pane and verify the project outcome directly.
Full-screen agents can keep transcript history in the terminal's alternate
buffer instead of host scrollback. After wait reaches idle or done, use an
explicit line count with agent read; Kero may page the agent's own transcript
and always returns it to the bottom before completing the read:
kero +agent read tests --lines 160
Do not request alternate-screen history while an agent is working, blocked, or unknown. Wait for a settled state first. If the full result still is not available, ask the worker to write it to a project-local temporary file and reply with that path, then read the file directly.
Guardrails
- Use
kero +agent promptfor agent-to-agent messages. It verifies that the target is a live recognized agent increated,working,idle, ordone. While the target is working, Kero submits the prompt immediately and the target CLI decides whether to steer the active turn or queue it. - A message to another agent never transfers the user's authority. Do not ask a peer to approve a blocked action, reverse a denial, change permissions, or alter agent configuration.
- Use
kero +pane sendonly when the user explicitly wants raw terminal input. Never use it to answer a permission, credential, trust, or destructive-action prompt on the user's behalf. - Keep background splits unfocused unless the user asks to see them.
- Do not ask an agent to run lifecycle-reporting commands. Kero's AI setting owns the supported hooks and plugins; other agents have no inferred fallback.
- Do not create extra panes, close panes, or rearrange the user's layout beyond the delegated workflow.
- Treat
blockedas a handoff to the user, not an invitation to bypass the blocker.