Outcome
A roster agent exists with a one-line description that states its job and system instructions that say how to do it and what never to do. Every trigger you connect later inherits this profile.Decide
What is the input, the output, and the boundary? An objective that names all three grades well and stays out of trouble.claude-code, codex, opencode, cline and github-copilot. Cursor, Devin and Gemini exist as interactive terminal harnesses for hands-on sessions and need your own provider key; they have no prompt API, so triggers cannot drive them.
claude-code unless you have a reason not to; every worked example in Guides uses it.
Which template does it run on? The template is where tools, MCP servers, secrets and skills live. If you have not built one yet, create a blank one now and fill it in during Give it tools. An agent without a default template launches on a bare sandbox and has no tools.
Do it
Open Agents > New Agent

Profile: the name is shared by every trigger; the avatar syncs to the Slack app icon.
@ in Slack. Pick the avatar; when a Slack app is connected later, its icon is set from this.Write the description and system instructions

Instructions: one line of job, then the how and the never.
Set the default template and coding agent

The agent sheet: default template and coding agent are shared by every trigger.
Verify

The roster: one card per agent with its description, trigger icons and creator.
runtm-api agents get <agent_id> returns name, description, system_instructions, default_template and default_agent. If default_template is null, the agent will run on a bare sandbox.
Where instructions sit
System instructions are layer 5 of 9 in the instruction stack that Runtime writes into every session. Runtime’s own session instructions, the template’s environment notes and the agent’s communication channels come first; the organization’s custom instructions, the template’s context, the user’s defaults and any per-session override come after and win on conflict. So an org-wide instruction such as “never paste card numbers” beats anything an agent’s persona says, and a template’s “use theacme Postgres role” beats the agent’s generic database advice. Details in Instructions.
Gotchas
--templateis the template’s name, not its ID. The roster agent storesdefault_templateby name.runtm-api template listshows both.- An agent with no default template still launches. It just launches on a bare sandbox with no tools, no skills and no secrets, and the run fails for reasons that look like the agent’s fault.
- Agents require an organization. In personal mode the Agents page says “Agents require an organization”. Switch to an org, and use an org-scoped API key for the CLI; a personal key cannot see org agents no matter which
--orgyou pass. - Instructions are not enforcement. “Never issue refunds” in the persona is advice the model usually follows. A deny rule on the refund command in Guardrails is what makes it impossible.
- Description is for people; instructions are for the model. Do not repeat the whole method in the description; the card truncates it to two lines.
- Roster versus trigger in the CLI.
runtm-api agentswith no--typeis the roster;--type slack|github|linear|emailis a trigger integration. Same verb, different resource. --clear-templateclears; omitting--templateleaves it alone.agents updateis a partial patch, and clearing fans out to every linked trigger.