Skip to main content
A run is one agent working in its own cloud sandbox. You pick the agent and its model, write the first prompt and describe the environment. Tracks prepares the sandbox, starts the agent and records everything it does until the run ends.
The command returns right away with the run’s id. See Agents and models for every agent you can pick and the models it accepts.
In the web app, Runs → New run starts the same thing from a form, with repositories, skills, MCP servers and command-line tools picked from your library.

The environment

Everything the agent works in is fixed when the run starts. Setup and teardown may run again if Tracks restarts mid-way: write them so running twice does no harm. The repository is any Git URL the sandbox can clone. For a private one, see Private repositories.
The sandbox is destroyed when the run ends. Anything the agent should keep, it must push or send somewhere, for example by opening a pull request.

Budget and time limit

Every run has both. Reaching either one ends the run.
  • The budget counts what the run spends on model calls and sandbox time. A run can go slightly over it, by the requests already in flight when the budget is reached.
  • The time limit counts from when the run starts, setup included. It stops the agent even in the middle of a prompt.

One prompt, or a conversation

By default a run is one-shot: it ends as soon as the agent finishes its first prompt. Add --no-one-shot to keep chatting with the agent (one_shot: false in the API). After each prompt, the run waits idle with its sandbox kept, and you send follow-ups:
The agent continues where it stopped. A follow-up can switch to another model of the same agent. An idle run waits for its next prompt for its idle timeout: 15 minutes by default, from 2 to 15 minutes (--idle-timeout, in seconds). Then it ends. To stop a run yourself:
  • tracks runs end <id> ends it once its current prompt finishes.
  • tracks runs cancel <id> stops the agent right away, even mid-prompt.

Statuses

End reasons

completed means the agent stopped, not that it did a good job. Read its last messages to judge its work, or use an experiment to have it judged for you.
A failed run has one of these failure_kind values:

Events and frames

A run records what the agent does in two ways.

Events: read these

What the agent did, in one format for every agent: its messages, reasoning, tool calls, subagents, the pages its browser visited, and why it stopped.

Frames: raw output

Every line the agent printed, exactly as printed, in its own format. Use them to debug or find a detail events leave out.
Each event points to the frames it was read from. The last event of every prompt is a stop, saying whether the agent completed, failed or was canceled. In the web app, a run’s page shows the same thing in its Conversation tab, the tools it used in Agent Tools, and its settings in Configuration.

Labels

Attach labels to a run to find it again, such as ticket:ENG-42, with --label ticket:ENG-42 on tracks runs create or labels in the API. Then list runs by label with tracks runs list --label ticket:ENG-42, or GET /runs?label=ticket:ENG-42. Tracks never reads them. Up to 19 labels of yours per run: Tracks adds started_by, the API key that started it. Tracks sets some labels itself: started_by names the API key that created the run, and runs of an experiment carry experiment, execution and slot.

What it costs

tracks runs usage <id> shows what the run consumed, tokens per model and sandbox time, and what it cost. Runs are paid from your organization’s balance, and start only while it is above $0. See Billing.