Skip to main content
The tuple CLI keeps user-level preferences in ~/.tuple/cli.toml. If the file exists, the CLI reads it on every invocation.The file is created automatically the first time the CLI saves something to it. The containing directory is created with permissions 0700 and the file is written with 0600. The format is TOML.

Top-level keys

Harness entries

Each [harness.<key>] table describes one agent. The same table is used for three different purposes; which keys you set determines the kind of entry:
  • Settings-only entry — set model, reasoning, or extra_args (but neither command nor url). This applies launch settings to a built-in agent without defining a new agent.
  • Custom command agent — set command to an argv template. Use {PROMPT} as a placeholder for the prompt text. If you omit {PROMPT}, the prompt is appended as a final positional argument.
  • Custom URL agent — set url to a URL template with {PROMPT} (URL-encoded) as the placeholder. The URL is opened via the platform opener instead of exec’ing a process.
command and url are mutually exclusive on a single entry. If both (or neither) are set on a custom entry, the entry is ignored.Custom entries with the same key as a built-in agent (claude, codex, cursor, copilot, opencode, pi, droid) shadow the built-in.

Keys

The model and reasoning values are dropped silently for agents that do not support those flags (cursor and opencode have no reasoning flag, droid has neither). tuple connect prints a warning on stderr when this happens.--model and --reasoning flags on tuple connect override the saved values for a single invocation.

Example

What’s next