Commands are slash messages Link Harness runs

A command is an owner's slash message that Link Harness handles. Namespace Commands lists the primary action names. Command Aliases lists familiar spellings that resolve to those same actions, with no separate implementation.

Which are on

Local built-ins use their agent's [commands] switches, such as [commands] new = true. Route-backed commands also require a grant and an available provider. An unavailable command is text for the model. A connection sends a command as text, so each works on every connection and with lnk agent chat send --message "/help".

Label command answers

Set command_response directly in [behavior] in Config/agent.toml to label harness answers, for example command_response = "🤖 Automated Response". The label appears on its own line before the command's answer. Its default is empty. Ordinary model replies and commands that ask a model question keep their own output.

Model commands

/model:get shows this conversation's model and effort; /model:help lists its enabled model commands. Both answer without a model turn. /model:set <id> changes the conversation's model, and /model shows the same information as /model:get when given no arguments.

From the CLI

Common controls also have CLI forms: lnk agent chat status, compact, create, export, goal, queue, rename, resume, steer, stop and verbose. Give --chat <name> to select their conversation. For example, lnk agent chat queue "look at the tests next" sends /chat:queue look at the tests next through the same command handler. lnk agent chat ask "what changed?" asks a side question. Model selection uses lnk agent model set <id>; with --chat <name> it sends /model:set <id> for that conversation.

/help

Lists the commands that are on, and what each is for. A command its spec leaves off, or one this agent can't run, such as /skill:write without its file tool, isn't named.

Inspect its work

/chat:status shows the model, its provider, the chat, and the conversation's messages and tokens. It answers at once, without asking the model:

Model: claude-haiku-5-5 (anthropic)
Chat: telegram:42
Conversation: 6 messages since /chat:create, about 1840 of 128000 tokens

What it counts

It counts your messages and the agent's answers from the chat's last /chat:create on, or from its start, and the tokens they take of the window a turn fills.

Start a new conversation

Send /chat:create on any chat, or run lnk agent chat create. The harness answers at once, without asking the model, and your next message starts a conversation of its own: the model is sent nothing from before the /chat:create, not even a summary of it.

The chat stays the same

Its folder, its events.jsonl and its conversation.md keep everything before the /chat:create, and memory still searches it. It is kept there too, as /chat:create, an event of the role command, and in conversation.md it is yours.

An answer under way

An answer already being written when you send /chat:create finishes as it began; the next one starts after it.

Stop an answer

/chat:stop ends the answer being written in the chat it's sent on, at once: what it wrote so far is kept, and sent, marked cut short, and any call it was making is cancelled. With no answer being written, it says so. It's session/cancel of ACP, the Agent Client Protocol, sent as text, so it works on every connection.

Pursue a goal

/chat:goal <condition> sets the chat's goal and asks a turn toward it. After each answer the agent's model judges, asked alone, whether it holds: while it doesn't, the agent takes another turn on its own, its answer sent to the chat as an answer nobody waited for is. It stops when the goal holds, when it's judged out of reach, or at its spec's [goals] limits, turns and tokens, whichever comes first.

/chat:goal and /chat:goal --clear

/chat:goal shows the goal and what it has spent, or how the last one ended; /chat:goal --clear drops it, and /chat:create does too. There's no /chat:goal where the spec turns off [commands] goal, or leaves out [goals] turns.

Who runs one

Only your own message runs a command. A message from anyone else is text for the model, whatever it says: a person in a chat the agent is shared with, a schedule, a subagent, a teammate or a background command, each of which comes with who sent it (Link-From). Why it works this way: Decisions.

A message that's text

A message is text, too, when it holds an image or a document, when something follows a command that takes nothing after it (/chat:create please), or when no command has its name.

Docs

  • Namespace Commands: Namespace commands are the primary names for an agent's actions
  • Command Aliases: Command aliases let you keep familiar spellings when coming from another harness
  • Decisions: Why Link Harness's commands work the way they do
  • Chat Commands: Chat commands manage a chat's conversations and what its next turn is sent: the chat namespace's actions beyond /chat:create, /chat:stop, /chat:status and /chat:goal, which Commands explains
  • Model Commands: Model commands show and switch the model a conversation runs on, how hard it thinks and whether it's asked fast, without a restart
  • Skill Commands: Skill commands run a skill, a reusable prompt, as a turn of its own, and write new ones from what the agent just did
  • Task Commands: Task commands list and manage the agent's work through its task namespace: background commands, subagents and schedules