Skip to content

terminal.open.v1

Open a terminal in a new tab

Opens a new terminal tab in the scoped workspace and returns the id of the pane it created. Unlike terminal.run.v1, which reuses a terminal already in scope, this always creates one — for work that needs a pane of its own, such as running an agent against a prompt. An omitted command opens an empty shell. The pane belongs to the workspace once created; the id identifies it for later intents and confers no ownership.

At a glance

Callable byagent, cli, plugin
Effectwrite — Changes state.
Confirmationpolicy — May require a live confirmation, decided by policy and the caller’s audience.
Idempotencynone
Leaves the machineyes
Provided bydev.tenon.core
Contract classsealed

Input

PropertyRequiredTypeConstraints
commandnostringlength 0–49152
workingDirectorynostringlength 1–16384

Output

PropertyRequiredTypeConstraints
paneIDyesstringformat uuid, length 36–36, pattern-checked

Errors it can return

These are this contract’s own failures, on top of the lifecycle errors every intent can settle with. See Errors.

  • dev.tenon.core.terminal-unavailable

Call it

From a plugin — declare it in intents.uses first:

js
const result = await tenon.intents.send("terminal.open.v1", {})
if (!result.ok) throw new Error(result.error.code)

From a shell:

sh
tenon-cli intent send terminal.open.v1 --input '{}'

Ask your own build for this same contract with tenon-cli intent describe terminal.open.v1.