Skip to content

ahpd 0.13 ​

The good stuff ​

ahpd installs in one line, approves shell commands by rule, and runs on Windows.

0.13.0 - 2026-10-20 ​

Upgrading ​

  • http is now httpApi, and proxy is now modelProxy. 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 terminalAutoApproveDefaults to none to 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: false in a preset keeps Claude's own tools.
  • A JWT with no exp is refused.

Install and update ​

  • One line installs ahpd: curl -fsSL https://ahpio.com/ahpd/install.sh | bash, or irm https://ahpio.com/ahpd/install.ps1 | iex on Windows. It can install Node, then runs ahpd configure. --uninstall removes ahpd again. See docs/server/INSTALL.md.
  • ahpd configure finds 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/update and x-ahpd/update install a newer @ahpd/server, move every plugin to the new sdk, and restart the daemon. See docs/server/UPGRADE.md.
  • ahpd service install hands 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, terminalAutoApproveRules and terminalAutoApproveDefaults approve shell commands by rule. A command is split into its parts before the rules match it.
  • commandParser, or a plugin's registerCommandParser, replaces the command splitter.
  • eligibleForAutoApproval makes 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 needs config: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_message answers 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 tokensPerPerson tokens of their own, each with an optional label, expiry and a subset of their grants. See ahpd token and 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 pool and cap, and @ahpd/sdk exports PolicyLimits.

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\proj is /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 .git asks 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 $comment no 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.