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 tokensWhat 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
chatnamespace's actions beyond/chat:create,/chat:stop,/chat:statusand/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