Skip to main content
An agent profile is a named preset of an agent, its model and thinking level, what its tasks run on, and what they continue on when a plan’s window is spent. Profiles belong to an organization. list, create and a profile named by its name act in the one --org names, else the one AETHER_ORG names, else your personal organization; a profile’s id reaches it in the organization that owns it, whichever --org names. An automation runs its tasks with a profile. A <profile> argument is the profile’s id, or its name in the organization. A UUID is always taken as a profile’s id, so a profile named as a UUID is reached by its id.

Subcommands

list

Lists each profile with its agent, model, thinking level and what it runs on. With --json, prints the profiles as the API returns them.

get

Shows the profile’s agent, model, thinking level, what it runs on and its fallback. With --json, prints the profile as the API returns it.

create

string
Profile name, unique in the organization.
string
The agent: claude-code, codex or opencode.
string
The model. Defaults to the agent’s default model.
string
The thinking level, one the agent and model offer. Defaults to the model’s own; none names no level.
string
What the profile’s tasks run on:
  • default: nothing is pinned, so each task runs on its creator’s default. This is the default.
  • aether: Aether inference, paid from the organization’s balance. Claude Code and Codex only.
  • A connection you hold, by its name or its id. A UUID is always taken as a connection’s id, so a connection named as a UUID is passed by its id. A name you hold under two connections is refused with their ids.
string
What a task continues on when its plan’s window is spent:
  • none: nothing, so a task on the profile’s plan pin stops. This is the default. A profile that pins nothing has no fallback of its own: each task follows its creator’s default, fallback and all.
  • any: the first connection the pin’s holder holds that the window does not block.
  • aether, or a connection by its name or its id: that alone.
string
With --fallback any, what the task continues on when no connection is usable: aether, or a connection by its name or its id.
The API refuses a pin or a fallback the profile’s agent cannot run on, such as a connection that works with another agent, your agent’s own ChatGPT login, or Aether inference for OpenCode. Only a plan’s window is spent, so only a plan pin carries a fallback, and only the pinned connection’s holder chooses it. The CLI prints each refusal as the API words it.

update

Only the fields a flag names change: the update sends those alone, and the API keeps the rest. The flags are those of create but --agent-type, since a profile keeps its agent. The API checks the model and thinking level together, so --model or --reasoning-effort sends both. A new --model keeps the thinking level when the model offers it, and --reasoning-effort none returns the profile to the model’s default. Either saves a profile on a retired model on its successor, while --model naming a retired model is refused. The update reads the profile for the one its flags leave and sends it back as read, so a change to it someone saves between that read and the update’s write is overwritten. The API refuses only a change it sees while it applies the write. --runs-on default unpins the profile, which clears its fallback. When the profile has a fallback, a new pin names its --fallback too, or the API refuses it.

delete

The API refuses to delete a profile an automation, an integration or a project’s settings still name. With --json, prints the deleted profile’s agent_profile_id.
bool
Skip the confirmation prompt.