Agent CLI

Configs

List, validate, create, and deploy agent configs from the terminal. Set which agent runs by default, per repository or for the whole account.

Every command here drives the same /v1 API the dashboard uses. An agent is a YAML file in git; the default-branch version is the live config: Agents as code. Install and authenticate first: Agent CLI.

Manage

agent config init scaffolds a starter config locally (default path: agents/my_agent.yaml; --force overwrites). Commit it to your default branch to deploy it: Ellipsis syncs any .yaml/.yml file at any depth under agents/, .agents/, ellipsis/, or .ellipsis/.

$ agent config init agents/unfilled-shift-digest.yaml
✓ wrote agents/unfilled-shift-digest.yaml
Commit it to your default branch. Ellipsis syncs agent configs from GitHub.

agent config validate checks a file server-side, with the same parsing the GitHub sync runs, so a local pass means the merge will deploy. An invalid file prints each error indented and exits 1, so it works as a pre-commit or CI check. It also names what the file is: a valid kind: code_review pipeline handed to config validate is reported as one, not waved through as an agent config.

$ agent config validate agents/unfilled-shift-digest.yaml
✓ agents/unfilled-shift-digest.yaml is a valid agent config

agent config list shows your saved configs with their source file (path@branch, prefixed when the last sync failed) and who last edited them. agent config get prints one config as YAML on stdout; the dashboard link goes to stderr, so piping and redirecting stay clean.

$ agent config list
ID              SOURCE                                UPDATED           EDITED BY
agent_x9Kd3Fq2  agents/ci-triager.yaml@master         2026-07-28 14:02  priya-shah
agent_2Jb7pN4x  agents/issue-implementer.yaml@master  2026-07-24 17:48  dani-okoro
agent_5Tn2wR8c  agents/recent-work.yaml@master        2026-07-21 09:15  marcus-lee
agent config get agent_x9Kd3Fq2          # the saved config as YAML (--json for the raw object)

agent config create creates an agent the same way the dashboard does: Ellipsis opens a pull request adding the config file to your repository, and the agent goes live when it merges. Pass exactly one of -f/--file (a local .yaml/.yml or .json file) or --template (a slug from agent template list); --path picks the file's location in the repo (default agents/<slug>.yaml, and it must be one of the synced locations above).

$ agent config create --repo splitshift-api --file agents/unfilled-shift-digest.yaml
✓ opened a pull request adding the agent config (agents/unfilled-shift-digest.yaml)
https://github.com/splitshift-hq/splitshift-api/pull/519
Merge it to deploy the agent.

agent template list prints the built-in templates with the slugs --template takes (agent config create --template, or the equivalent agent config init --template <slug> --repo <name>):

$ agent template list
SLUG                       NAME                       DESCRIPTION
agent-config-builder       Agent Config Builder       Interviews you about the agent you want, then opens a pull request that adds a schema-valid agent config YAML to your repository so merging it deploys the new agent.
daily-standup              Daily Standup              Posts a product-level summary of yesterday's merged pull requests across every repository.
skill-maintainer           Skill Maintainer           Scans each day's merged pull requests and opens a PR updating your team's skills when the code has moved past them.
session-log-search         Session Log Search         Answers questions about your team's session history by searching every cloud agent run and synced laptop Claude Code session, reading their recaps and transcripts, and citing the exact session ids and pull requests behind each answer.
schema-migration-reviewer  Schema Migration Reviewer  Reviews database migrations before they merge.

Create one: agent config init --template <slug> --repo <name>

list, get, create, validate, and template list accept --json for the raw API response.

Default agents

agent config default manages which agent runs when a session names no config source: the defaults ladder of repository default, then account default, then a bare ad-hoc config (an empty system prompt on claude-opus-5, no triggers). This is what a bare agent session start "..." resolves; details on the resolution: Sessions.

agent config default                                     # the effective default where you are standing
agent config default list                                # every rung that is set, account and per-repo
agent config default set agent_5Tn2wR8c                  # set the ACCOUNT default
agent config default set agent_x9Kd3Fq2 --repo           # set the default for the repo you are standing in
agent config default set agent_x9Kd3Fq2 --repo splitshift-hq/splitshift-api   # set a named repo's default
agent config default clear --repo splitshift-hq/splitshift-api                # clear a rung (alias rm)

Bare agent config default reads the ladder the way session start does: the repo default for your origin remote if one is set, else the account default, else no default set (sessions start on the bare config).

$ agent config default
using config "CI failure triager" (repo default for splitshift-hq/splitshift-api)

Writes are always explicit about their target: without --repo they address the account rung, --repo with no value addresses the repo you are standing in, and --repo owner/name addresses that repository.

$ agent config default set agent_5Tn2wR8c
✓ set account default to "Recent work summary" (agent_5Tn2wR8c)
$ agent config default list
RUNG                          CONFIG               CONFIG ID       STATUS  UPDATED
account                       Recent work summary  agent_5Tn2wR8c  ok      2026-07-31 10:22
splitshift-hq/splitshift-api  CI failure triager   agent_x9Kd3Fq2  ok      2026-07-28 14:05

A rung pointing at a config that was deleted, disabled, or never merged shows broken: <reason> instead of ok, and sessions refuse to start on it until you fix or clear it: a broken default fails closed, never silently falls through to the next rung. An agent's own in-sandbox token can read the ladder but not set or clear a rung (the server answers 403), so an agent cannot repoint your account's default.