Sixteen flags are accepted by every surrealctl command. They may appear anywhere on the command line — before the group, between the group and the verb, or after the verb — so all three of these are the same invocation:
surrealctl --json instance list
surrealctl instance --json list
surrealctl instance list --json--help groups them under four headings, and this page keeps those groups.
Context
Authentication
--token has no short form on purpose: -t reads as --type on the instance commands, and a credential belongs in the environment or a file rather than in argv. See Authentication.
A base URL with a path of its own is refused as a usage error, because the client appends its own routes and the path would be silently prepended to every one of them:
Ensure the API base has no path, such as https://api.surrealdb.comOutput
--color is the one flag with no SURREALCTL_* variable. Colour also honours the NO_COLOR, FORCE_COLOR and CLICOLOR_FORCE conventions.
--json and --plain are independent axes: --json chooses the encoding, --plain the decoration. Passing both is accepted and --plain is ignored, because CI scripts pass both and erroring on that is hostile.
Logging
--help files the request timeout and the retry budget under this heading alongside the log level.
The effective per-request timeout is never shorter than 21 seconds, because the API's own upstream timeout is 20 seconds and giving up sooner abandons requests that are still being worked on.
The precedence chain
Every value that can come from more than one place is resolved once, before the command runs, in this order — highest first:
A command-line flag
An environment variable
The profile in
config.tomlThe persisted context, written by
org useYour account's default organisation, as the API reports it
The only candidate, when exactly one exists
An interactive picker, when a person is present
An error naming the flag that would have settled it
Layers 5 to 7 apply to the organisation specifically. Exactly one candidate is not a choice, so it is used silently; several candidates in a non-interactive session is an error rather than a guess:
Several organizations are available and none was chosen.
Pass --org, set SURREALCTL_ORG, or run `surrealctl org use <name>`.
Available:
acme
contoso--debug prints which layer won each value, and context show reports it as part of its answer:
| Layer | Reported as |
|---|---|
| Command-line flag | command-line flag |
| Environment variable | environment variable |
Profile in config.toml | profile in config.toml |
| Persisted context | persisted context (org use) |
| Account default | your account's default organization |
| Single candidate | the only candidate |
| Interactive picker | interactive choice |
An organisation reference that already looks like an id is used with no lookup at all. A name or slug costs one request to resolve, and an unrecognised one is answered with did-you-mean candidates.
A configured api value applies only when --api was not given. Because the flag has a default, the CLI cannot distinguish "absent" from "passed exactly the default", so passing --api https://api.surrealdb.com explicitly leaves the configured value unused.
Duration syntax
--timeout, --wait-timeout and spectron access-token create --ttl all accept the same syntax. A bare number means seconds.
| Suffix | Unit |
|---|---|
(none), s, sec, secs, second, seconds | Seconds |
ms | Milliseconds |
m, min, mins, minute, minutes | Minutes |
h, hr, hrs, hour, hours | Hours |
d, day, days | Days |
surrealctl --timeout 90 instance list
surrealctl instance create api --type shared-1 --region aws-euw1 --wait-timeout 5m
surrealctl spectron access-token create --ttl 2h The SURREALCTL_ prefix
Every environment variable this CLI reads is prefixed SURREALCTL_, and never SURREAL_.
Reusing the sibling's prefix would be actively harmful rather than merely untidy. SURREAL_TOKEN in a shell means a database JWT for one instance; reading it as a control-plane credential would send database tokens to api.surrealdb.com on every command.
The only SURREAL_* variables involved are ones surrealctl sets for the surreal child process during the handoff: SURREAL_TOKEN, SURREAL_NAMESPACE and SURREAL_DATABASE.
Variables that mirror a flag
| Variable | Flag |
|---|---|
SURREALCTL_PROFILE | --profile |
SURREALCTL_CONFIG | --config |
SURREALCTL_ORG | --org |
SURREALCTL_TOKEN | --token |
SURREALCTL_TOKEN_FILE | --token-file |
SURREALCTL_API | --api |
SURREALCTL_JSON | --json |
SURREALCTL_PLAIN | --plain |
SURREALCTL_YES | --yes |
SURREALCTL_NO_INPUT | --no-input |
SURREALCTL_LOG | --log |
SURREALCTL_DEBUG | --debug |
SURREALCTL_TIMEOUT | --timeout |
SURREALCTL_RETRIES | --retries |
Variables with no flag
| Variable | Effect |
|---|---|
SURREALCTL_CONFIG_DIR | Overrides the configuration and credential directory |
SURREALCTL_SURREAL_BINARY | Path to the surreal binary used by instance sql, import and export |
SURREALCTL_AGENT | 1 or 0, forcing agent detection on or off |
SURREALCTL_CLOUD_TOKEN | Supplies an already-minted Cloud session token, for support reproduction |
SURREALCTL_AUTH_CLIENT_ID | Overrides the OAuth client id, for a non-production tenant |
SURREALCTL_AUTH_ISSUER | Overrides the OAuth issuer, for a non-production tenant |
Conventions it honours
| Variable | Effect |
|---|---|
NO_COLOR | Disables colour |
FORCE_COLOR, CLICOLOR_FORCE | Enables colour, even when piped |
CI | Selects plain, structural output. CI=false, CI=0 and an empty value all mean not CI |
TERM=dumb | Selects plain output with no colour |
SSH_CONNECTION, SSH_TTY | Skips the browser login flow |
XDG_CONFIG_HOME, HOME | Locate the configuration directory |
HTTPS_PROXY, NO_PROXY | Proxy the API connection |
EDITOR | Used by config edit |
Configuration file equivalents
Five values can be persisted per profile with config set. Each is outranked by its environment variable, and config set warns when that variable is exported.
| Key | Environment variable |
|---|---|
org | SURREALCTL_ORG |
api | SURREALCTL_API |
json | SURREALCTL_JSON |
plain | SURREALCTL_PLAIN |
surreal_binary | SURREALCTL_SURREAL_BINARY |
Related pages
Output and exit codes — what
--json,--plainand--quietactually produceconfigcommands — reading and writing the configuration filecontextcommands — switching profilesOverview — the rest of the reference
SurrealDB CLI — the data plane, and its own environment variables: the
SURREAL_*set this CLI never reads