inspector/clients
Repository files (latest commit first)
Filename Latest commit message Latest commit date
cliffhall cc0770babd fix(apps): fail closed on a malformed app ui/initialize
The capability observer recorded `params.appCapabilities` from ANY frame whose
method was `ui/initialize`, before the bridge validated it. A view could
therefore send a second, malformed initialize — one the bridge rejects, keeping
the capabilities it had already accepted — and flip `elicitation` on in this
gate, after which the host would forward an elicitation the bridge never
negotiated.

Now only a well-formed initialize REQUEST is recorded (a JSON-RPC id, plus the
handshake's required `protocolVersion` and `appInfo`), and only the first one:
the bridge keeps what it accepted and ignores re-initialization, so this gate
agrees rather than offering a second, laxer path to the same flag. A malformed
first frame records nothing.

This is a gate, not a second copy of the bridge's schema — the bridge stays the
authority on the rest of the frame.

Signed-off-by: cliffhall <cliff@futurescale.com>
2026-08-22 20:45:28 -04:00
..
cli chore(deps): bump nanoid to 3.3.18 to clear the high-severity advisory 2026-08-18 23:12:10 -04:00
launcher chore(deps): bump nanoid to 3.3.18 to clear the high-severity advisory 2026-08-18 23:12:10 -04:00
tui chore(deps): bump nanoid to 3.3.18 to clear the high-severity advisory 2026-08-18 23:12:10 -04:00
web fix(apps): fail closed on a malformed app ui/initialize 2026-08-22 20:45:28 -04:00