# Changelog

## 0.4.0

### Minor Changes

- [`f383598`](https://github.com/Ad-Astra-Computing/aer/commit/f38359892b5cfc2a5a9bddb23c0284d00bc09060) - Security fixes:

  - `expressMcpGuard` and `honoMcpGuard` now throw at setup if `requireDpop` is
    set without `trustedOrigin` (new option on Hono's adapter, matching
    Express's). Without it, the DPoP `htu` origin was derived from the
    client-controlled `Host` header, letting an attacker holding a captured
    proof replay it across deployments sharing the same audience and replay
    store by spoofing `Host`. Pin `trustedOrigin` to your resource's real
    public origin. This is a breaking change for any caller relying on the old
    fallback.
  - A `resolveMtlsThumbprint` resolver that throws now denies the request (401)
    instead of raising an unhandled rejection that could crash the process.
  - Express's internal async handler now forwards an unexpected rejection to
    `next` instead of swallowing it.
  - README: stronger warnings on `thumbprintFromForwardedClientCert` (only safe
    behind a proxy that strips and overwrites the header before your app sees
    it), on `trustedOrigin`, and a note that the framework-neutral core has no
    setup-time check of its own.

## 0.3.1

### Patch Changes

- [`4829d3d`](https://github.com/Ad-Astra-Computing/aer/commit/4829d3d438ae64c98210023360d04541b3b7a4db) - Docs only: the README's install line now uses the default tag instead
  of `@next`, so npm shows the current instructions.
- Updated dependencies
  - @adastracomputing/aer-resource-node@0.3.1

## 0.3.0

### Minor Changes

- [`f0fcbcb`](https://github.com/Ad-Astra-Computing/aer/commit/f0fcbcb177b9c08467ef070df5e6a03416f70aa2) - When the attestation JWKS cannot be fetched, the guard now denies with HTTP
  503 and reason `jwks_unavailable`, the same way an unreachable introspection
  endpoint is reported, instead of 401 `unknown_kid`. The request is still
  denied; the new status tells the caller the guard could not decide and a
  retry may succeed, rather than that the token was bad. A token is also no
  longer admitted from an expired JWKS cache during an outage.

### Patch Changes

- Updated dependencies
  - @adastracomputing/aer-resource-node@0.3.0

## 0.2.0

### Minor Changes

- [`5d8c488`](https://github.com/Ad-Astra-Computing/aer/commit/5d8c4884b029fdc66566df9fbd36217e57de1a89) - **Breaking:** the minimum supported Node is now 22, up from 20.

  Node 20 reached end of life on 30 April 2026 and receives no further security
  fixes, so these packages no longer claim to support it. Node 22 is supported
  until 30 April 2027 and remains the floor until then. Node 24 is the current
  long-term support release and is recommended.

  With pnpm, which enforces this field, installing on Node 20 now fails rather
  than warning. With npm it warns.

### Patch Changes

- Updated dependencies
  - @adastracomputing/aer-resource-node@0.2.0

## 0.1.2

### Patch Changes

- [`8ccc1b3`](https://github.com/Ad-Astra-Computing/aer/commit/8ccc1b3fa0bd52983476783c2469e82f5c8fd8d2) - `hono` and `express` peer dependencies now declare the ranges this package
  is actually tested against (`^4` and `^5`) instead of a bare `*`. The README
  also now explains that the default `issuer` and `jwksUrl` come from
  `@adastracomputing/aer-resource-node`.
- Updated dependencies [[`8ccc1b3`](https://github.com/Ad-Astra-Computing/aer/commit/8ccc1b3fa0bd52983476783c2469e82f5c8fd8d2), [`a08ab65`](https://github.com/Ad-Astra-Computing/aer/commit/a08ab65acef0b3bf1edbe731163b7c5bfeb659a2), [`64ac874`](https://github.com/Ad-Astra-Computing/aer/commit/64ac874d765089440cf94a2bb8455fe258e9e2af)]:
  - @adastracomputing/aer-resource-node@0.1.2

## 0.1.1 - 2026-07-20

### Changed

- Packaging only, with no API or behavior change: corrected the repository and
  issues URLs, excluded source maps from the published tarball and added package
  keywords and this changelog.

## 0.1.0 - 2026-07-11

First public release. Admission control for HTTP MCP servers: only AER-attested
agents reach your tools, and an unattested client gets a JSON-RPC deny. Ships optional Hono
and Express middleware via the `./hono` and `./express` subpath exports.
