Skip to content

All intents

Tenon serves 51 canonical contracts. Every finite request that crosses from a plugin, the CLI, or an agent into the host arrives as one of these, and each one is checked against the caller’s audience, declared uses, capabilities, and scope before it runs.

This page is generated by scripts/gen-intents.mjs from the Swift catalog and a running Tenon, so it cannot drift from what the app serves. Ask your own build the same question with tenon-cli intent list.

The Callable by column is the whole authorization story in one glance: a contract without cli cannot be sent from a shell, no matter how it is spelled. That is not cosmetic — a shell asking for one gets intent_not_found, because a caller that may not use a contract may not learn it exists either.

Why some pages have no schema table

12 of these are served only to plugins. This site is generated through the CLI discovery path, which fail-closes on exactly those, so their pages carry what the catalog declares and send you to tenon.intents.list() for the schema rather than printing a copy that can go stale.

Generated against an older build

Schemas on this site came from Tenon 0.1.0 (build 1, wire v3), and 2 contracts in the catalog beside it did not exist in that build yet: network.fetch.v1, workspace.identity.set.v1. Those pages carry the declaration without a schema. Run bun run gen:intents against a current Tenon to fill them in.

Schemas read from Tenon 0.1.0 (build 1, wire v3). Inventory read from the Swift catalog in the same commit as this page.

Workspace

IntentDoesCallable byEffect
workspace.content.open.v1Opens content in the tab identified by invocation scope, reusing the pane that already shows this kind of content and otherwise splitting a pane.agent cli pluginwrite
workspace.identity.set.v1Changes the name, colour, or icon of the workspace identified by invocation scope.agent cli plugin
workspace.pane.close.v2Closes the pane identified by invocation scope.agent cli plugindestructive
workspace.pane.content.set.v1Replaces content in the pane identified by invocation scope.agent cli pluginwrite
workspace.pane.focus-next.v1Cycles focus within the active tab in invocation scope.agent cli pluginwrite
workspace.pane.focus.v1Focuses the pane identified by invocation scope.agent cli pluginwrite
workspace.pane.owner.v1Returns the workspace and tab that own the named pane.agent cli pluginread
workspace.pane.split.v1Splits the pane identified by invocation scope.agent cli pluginwrite
workspace.pane.title.set.v1Pins a display name to the pane identified by invocation scope, so an agent working there can say on its own tab what it is working on.agent cli pluginwrite
workspace.select.v1Selects the workspace identified by invocation scope.agent cli pluginwrite
workspace.state.v1Returns a bounded structural snapshot of workspaces, tabs, and panes.agent cli pluginread
workspace.tab.close.v1Closes the tab identified by invocation scope, with every pane under it.agent cli plugindestructive
workspace.tab.create.v1Creates a tab in the workspace identified by invocation scope.agent cli pluginwrite
workspace.tab.focus.v1Focuses the tab identified by invocation scope.agent cli pluginwrite
workspace.tab.next.v1Selects the next tab in the workspace identified by invocation scope.agent cli pluginwrite
workspace.tab.previous.v1Selects the previous tab in the workspace identified by invocation scope.agent cli pluginwrite

Terminal

IntentDoesCallable byEffect
terminal.open.v1Opens a new terminal tab in the scoped workspace and returns the id of the pane it created.agent cli pluginwrite
terminal.process.read.v1Names the PTY device and the foreground process of the terminal identified by invocation scope.agent cli pluginread
terminal.run.v1Runs a command in the preferred visible terminal for the invocation scope.agent cli pluginwrite
terminal.scrollback.read.v1Returns one bounded page of the pane's retained scrollback, oldest row first.agent cli pluginread
terminal.viewport.read.v1Returns one bounded observation of the visible terminal identified by invocation scope.agent cli pluginread
terminal.wait.v1Waits for one bounded terminal condition and returns exactly one result.agent cli pluginread
terminal.write.v1Writes bounded text to the terminal identified by invocation scope.agent cli pluginwrite

Agents

IntentDoesCallable byEffect
agent.ask.v1Records one evidence-backed question against the pane in scope and waits until its exact human or agent recipient chooses an offered typed value, or until the caller-declared deadline expires.agent cli pluginwrite
agent.command.v1Returns the command line that starts the named agent the way this person runs it, ready for terminal.open.v1.agent cli pluginread
agent.inventory.v1Returns the coding agents installed on this machine, each with the options this person habitually passes it, so a caller offers the same choices the Launcher does instead of inventing its own.agent cli pluginread

Filesystem

IntentDoesCallable byEffect
filesystem.directory.create.v1Creates one directory without implicitly creating its ancestors.agent cli pluginwrite
filesystem.directory.list.v2Returns one bounded, cursor-addressable page of directory entries.agent cli pluginread
filesystem.file.create.v1Creates a new empty file and fails if the destination exists.agent cli pluginwrite
filesystem.file.read.v1Returns one bounded inline UTF-8 page of the file, split only on character boundaries.agent cli pluginread
filesystem.file.write.v1Atomically replaces the file with bounded inline UTF-8 content.agent cli pluginwrite
filesystem.path.exists.v1Checks whether a filesystem path exists.agent cli pluginread
filesystem.path.move.v1Moves a file or directory without replacing an existing destination.agent cli pluginwrite
filesystem.path.trash.v1Moves a file or directory to the recoverable system Trash.agent cli plugindestructive

Files

IntentDoesCallable byEffect
file.open.v1Opens a path with the trusted default or an explicitly approved provider.agent cli pluginwrite
file.reveal.v1Reveals a path in the system file browser.agent cli pluginwrite

Process

IntentDoesCallable byEffect
process.exec.v1Runs an unsandboxed local process with the current user's filesystem and network authority.agent cli pluginwrite

Browser

IntentDoesCallable byEffect
browser.surface.back.v1Navigates a caller-owned browser surface backward.plugin
browser.surface.forward.v1Navigates a caller-owned browser surface forward.plugin
browser.surface.load.v1Loads an HTTP or HTTPS URL in a caller-owned browser surface.plugin
browser.surface.reload.v1Reloads a caller-owned browser surface.plugin

User prompts

IntentDoesCallable byEffect
ui.confirm.v1Asks the user for an explicit yes or no decision.plugin
ui.pick.v1Asks the user to select one item from a bounded exact list.plugin
ui.prompt.v1Asks the user for bounded text.plugin
ui.toast.v1Shows a bounded in-app notification.plugin

Opening

IntentDoesCallable byEffect
url.open.v1Opens a web address with the trusted default or an explicitly approved provider.agent cli pluginwrite

Clipboard

IntentDoesCallable byEffect
clipboard.write.v1Writes bounded text to the system clipboard.plugin

Secrets

IntentDoesCallable byEffect
secrets.delete.v1Deletes one value from the caller's isolated secret namespace.plugin
secrets.get.v1Reads one value from the caller's isolated secret namespace.plugin
secrets.set.v1Stores one value in the caller's isolated secret namespace.plugin

Network

IntentDoesCallable byEffect
network.fetch.v1Performs one bounded HTTP request to a policy-authorized host.agent cli plugin