Use case

A dial you turn, that your agent obeys

Every other key in Junkt is written by your agent. A control is written by you and read-only to it — which is the only reason a stop switch is worth anything.

The problem

Your agent runs on a schedule, or in a loop, or in a conversation you are not watching. It is doing the wrong thing. You want it to stop, or to be more careful, or to work on something else — and the only levers you have are editing its prompt, editing its schedule, or revoking its access entirely.

None of those are the right size. Editing the prompt means the next run does something different from the last one for reasons nothing records. Revoking access is a sledgehammer that breaks the parts that were working. And neither is available at two in the morning from a phone.

What you want is a switch: somewhere you can change your mind, that your agent checks on its own.

The pattern

Create a control in the dashboard. Give it a name, a type, and — the part that matters — a sentence saying what it means:

control:paused   boolean   false
                 "If true, stop and do nothing this run."

Your agent reads it at the top of every run:

list_controls()
→ { "controls": [
      { "key": "control:paused",
        "type": "boolean",
        "value": false,
        "description": "If true, stop and do nothing this run." }
    ],
    "total": 1 }

Flip the switch in the dashboard and the next run reads true instead, and stops. Nothing was redeployed and no prompt changed.

Why read-only is the whole feature

set_value, increment and delete_key all refuse the control: namespace. An agent that tries gets told so, and pointed at the tool that does work:

set_value("control:paused", "false")
→ error: The "control" namespace holds controls, which are set by
  the account owner and are read-only to you. Read them with
  list_controls; you cannot create, change or delete them.

This is not a technicality. An agent that can clear its own pause flag is not paused — it is an agent with a note it is free to ignore. Junkt could have let controls be ordinary keys with a convention around them, and the convention would have held right up until the run where it mattered.

More than on and off

A boolean is the obvious control, and not the only useful one. Controls are typed, so the thing you set matches the thing you mean:

control:mode           enum     "conservative"
                       ["conservative", "normal", "aggressive"]
                       "How much to attempt without asking me first."

control:daily-budget   number   25
                       "Stop after this many API calls in a day.
                        Count them with increment."

control:focus          string   "The Q3 launch"
                       "What to prioritise this week."

An enum earns its place here. Told to work in a “careful” mode, a model has to interpret what that means. Given a closed set of three options it does not — it reads one of three values and branches. The type is doing work that a string cannot.

A number pairs naturally with a counter: the control is the ceiling you set, the counter is the tally your agent keeps, and the comparison between them is the whole rule.

Tell your agent

This is the step that makes it real. A control nothing checks does nothing:

Before doing anything, use Junkt to call list_controls.

Read each control's description and follow it. If a control
tells you to stop, stop and do nothing else this run — do not
work around it, and do not try to change it.

Otherwise carry on, respecting any mode or limit you find.

What this does not do

Junkt cannot stop your agent by force. There is no interrupt, no revoked token, no process to kill. A control is a place your agent will reliably look — and looking is something you have to have asked it to do.

That is a real limit and worth knowing before you rely on it. It is also the same bargain as every instruction you give an agent, with one difference: this instruction lives outside the conversation, you can change it after the fact, and the agent cannot edit it. That turns out to be most of what people actually want when they say they want a stop button.

Every change you make is recorded in your activity log with the time, so what you changed and when is not something you have to remember either.

Somewhere to change your mind

Ten controls on the free tier, on their own allowance — setting one never costs you a key. No card.

Ask an AI

Junkt is built for agents, so ask one

Pick a question and where to ask it. Each link opens a fresh chat with the question already written, including a nudge to give you a straight answer rather than a sales pitch.