Appearance
ahpd 0.13
The good stuff
ahpd installs in one line, approves shell commands by rule, and runs on Windows.
- One-line install:
curlorirm, thenahpd updateandahpd service installkeep it running.- Approvals by rule: a command the terminal rules approve runs without a question.
- Windows: terminals, sessions and CI on Windows.
- Tokens of your own: a person mints tokens with a label, an expiry and a subset of their grants.
- Talk with a bot: a bot has a chat of its own.
0.13.0 - 2026-10-20
Upgrading
httpis nowhttpApi, andproxyis nowmodelProxy. A file with the old names still starts, with one warning for each key. A file that holds both names of one key is refused. See docs/server/UPGRADE.md.- A shell command that the session owner's terminal rules approve now runs without a question, in Claude, ACP, pi and cofold. A window that pushed no rules gets VS Code's default table. Set
terminalAutoApproveDefaultstononeto keep every command asking. - When the host offers
task_add, Claude's own task tools are denied, and its plan goes to the host's task list.hostTasks: falsein a preset keeps Claude's own tools. - A JWT with no
expis refused.
Install and update
- One line installs ahpd:
curl -fsSL https://ahpio.com/ahpd/install.sh | bash, orirm https://ahpio.com/ahpd/install.ps1 | iexon Windows. It can install Node, then runsahpd configure.--uninstallremoves ahpd again. See docs/server/INSTALL.md. ahpd configurefinds Node, Bun and Deno and the known ACP agents on the PATH, and offers a preset for each agent it finds.ahpd update,POST /api/updateandx-ahpd/updateinstall a newer@ahpd/server, move every plugin to the new sdk, and restart the daemon. See docs/server/UPGRADE.md.ahpd service installhands the daemon to the service manager: a systemd user unit on Linux, a LaunchAgent on macOS. See docs/server/RUN.md.- npm prints the packages it installs before it runs.
Approvals
terminalAutoApproveEnabled,terminalAutoApproveRulesandterminalAutoApproveDefaultsapprove shell commands by rule. A command is split into its parts before the rules match it.commandParser, or a plugin'sregisterCommandParser, replaces the command splitter.eligibleForAutoApprovalmakes a tool ask on every call, in every backend and every permission mode.- A client's rules reach the agent's system prompt.
- A pushed
/.../rule that VS Code's default table does not carry needsconfig:change.
Sessions and VS Code parity
- A session from VS Code keeps its owner, scope and config when a listing runs while it restarts.
- A remote session from VS Code 1.141 keeps its origin.
- A stopped Claude turn leaves the session idle, not failed.
- Each built-in Claude plugin is switched on and off by itself, and a session switch on one stays.
- A synced skill is named by its plugin.
- An automation is exported as VS Code's file, and VS Code's file is imported.
- An unchanged set and an idle cancel are echoed to the client that sent them.
- A client sees the agent account.
- A client that stops reading is bounded.
- A session row's diff stat counts the session's own work.
- A session recorded outside the served paths stays listed.
- A session whose folder was removed outside ahpd no longer names that folder.
- A push of another key keeps the session tools as they were set.
- ACP opens a session in the permission mode it asked for.
Tasks and plans
- The host keeps one task list per session. Claude and ACP write their plans to it, and the host draws the Plan call.
- The plan channel announces a removed task with
x-ahpd-plans/taskRemoved.
Bots
- A person talks with a bot in a chat of its own. A message wakes the bot's back session, and
post_messageanswers in the chat. - A bot's persona is its
AGENTS.md, and its data is one folder.
Users and tokens
- A person mints up to
tokensPerPersontokens of their own, each with an optional label, expiry and a subset of their grants. Seeahpd tokenand docs/server/USERS.md. - A plain request with a refused token answers 401.
- A JWT is verified locally.
- Usage limits are charged per turn and per proxy call, and a client reads each limit at
usage://limits. - A put can clear a policy's
poolandcap, and@ahpd/sdkexportsPolicyLimits.
Windows
- The checks run on Windows in CI, and a failure there blocks a merge.
- Terminals run on Windows.
- A spawn opens no console window.
- An ACP server stops on Windows.
- A host folder has a drive-style path inside a machine:
C:\Users\ana\projis/c/Users/ana/proj. - A mount source can start with a drive letter.
- A file URI keeps its drive, and git never runs without a folder.
- An archive no longer deletes files through a junction.
- A redirect into
.gitasks on Windows, as it does elsewhere.
Agents
- Claude is on the Agent SDK 0.3.301, ACP on the ACP SDK 1.8.0, and pi on pi 1.3.0.
- cofold: a client tool with
$commentno longer fails the turn, and the first message of a session shows once. - An ssh machine runs every agent.
Daemon
- A failure is JSON under
--json.