Human in the loop
Your agent reaches you. You answer from your phone.
An agent working on its own eventually hits something only you can decide. HITL is how it taps you on the shoulder — a notification when it finishes, a question when it is stuck, and your answer carried back into the session while it waits.
Connecting a machine
about two minutes, onceStep one
Install the CLI
npm i -g hitl-cli
Node 18 or newer. No other dependencies.
Step two
Sign in
hitl login
It prints a short code and opens this site. You approve the machine here and choose which application it sends as — that is what decides whose phone it reaches.
Step three
Switch the hooks on
hitl init # this project
hitl init --global # every project
Merges into your Claude Code settings without disturbing what is
already there. Either way, a project you have not run
hitl login
in stays silent — so --global
means "be ready everywhere", not "report everything".
There is no key to copy and no script to install. The credential belongs to that one machine, so you can disconnect a laptop without silencing anything else.
What reaches your phone
| When | What arrives |
|---|---|
| It finishes a turn | What it actually did, not just that it stopped. Quiet by default for anything that finished in under ninety seconds — a turn you watched happen is not worth interrupting you for. |
| It needs permission | Including the command it wants to run, so you can decide without opening a laptop. |
| It asks a question | You reply in your own words. The session is still sitting there waiting, and picks your answer straight up. |
| It wants approval | Approve or deny, or a set of named choices the agent offered. |
From the command line
The other direction: an agent stops and genuinely waits for you.
hitl ask "Ship v2.41 to production?"
Blocks until you answer, then prints what you said. Tell your agent it exists and it will reach for it instead of guessing.
Or over MCP
Every agent client already speaks this, so there is no integration to write — a URL and a token.
claude mcp add --transport http hitl \
https://hitl-admin-web.fly.dev/mcp \
--header "Authorization: Bearer $HITL_TOKEN"
Gives the agent four tools: tell you something, ask you something, ask your approval, and check whether you have answered.
Sign in to get started
You need an account before a machine can be approved against it.
Continue with GoogleGoogle authentication is required.