Skip to content

Commit 20f8073

Browse files
committed
docs: v0.42.3 pre-tag audit corrections
1 parent 65bfe95 commit 20f8073

2 files changed

Lines changed: 11 additions & 8 deletions

File tree

‎CHANGELOG.md‎

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -20,26 +20,29 @@ published section (it happened to #170).
2020
v0.16.0. They now wait for the write, and every event logged before the relay starts
2121
joins the queue #228 added for the relay's own. The `PINS-READ-ERROR` exit waits
2222
too: it logs nothing itself, but it could exit ahead of an `orig-hash-mismatch` warn
23-
queued just before it (lost in 1 of 20 runs on 0.42.2). `SECRET-MISSING` has the
24-
same shape and gets the same wait. (#229)
23+
queued just before it (a race the review saw lose the event in 1 of 20 runs on
24+
0.42.2). `SECRET-MISSING` has the same shape and gets the same wait. (#229)
2525

2626
- **A `tools/call` whose argument was nested deep in arrays stopped
2727
`mcpm guard inspect` mid-run, and the relay crashed or blocked on it.**
2828
`stringArgLeaves` (`tool-call-args-walk.ts`), the argument walk behind the
2929
shell-metacharacter and query-control detectors (v0.31.0) and the CLI-flag
3030
detector (v0.32.0), recursed once per array level with no bound: its depth cap
3131
counts objects only, so that batch-style arguments stay covered (TODOS #50).
32-
Under Node 24.20.0 it overflowed at 2,610 array levels, where `JSON.stringify`
33-
holds to ~6,200. `guard inspect --json` printed the verdicts before that frame,
32+
Under Node 24.20.0 it overflowed at ~2,400–2,600 array levels (2,610 for the
33+
reproduction with a string at the bottom), where the relay's `JSON.stringify`
34+
holds to ~6,000. `guard inspect --json` printed the verdicts before that frame,
3435
then `Maximum call stack size exceeded`, exit 1, and nothing after it; human
3536
output printed no verdicts at all. On the relay it is the MCP client's own
3637
request: v0.31.0 through v0.42.0 crashed the guard (reproduced on 0.42.0 at
3738
4,000 levels: exit 1, no responses), and v0.42.1–v0.42.2 blocked it as
3839
`inspect-rejected` through #226's try/catch in `relay.ts`, refusing calls that
3940
would forward fine. The walk is now iterative, one cursor per container, and
4041
yields what the recursive walk did (a property test runs the old walk as the
41-
oracle); 4,000 levels now forwards, and past ~6,200 the relay blocks it as
42-
`forward-serialize-failed`, as in v0.42.2. `guard inspect` also now reports a
42+
oracle); a 4,000-level call is now inspected like any other frame and forwards
43+
when clean, and past ~6,000 levels (5,968 on Node 24.20.0) the relay blocks it
44+
as `forward-serialize-failed`, v0.42.2's guard for frames too deep to
45+
re-serialize. `guard inspect` also now reports a
4346
frame whose inspection throws as `{"action":"error"}`, counted like a parse
4447
error, and carries on. Not fixed here: the relay's drift hash (`hashLeaf` in
4548
`pins.ts`) recurses too, so a `tools/list` input schema or `initialize`

0 commit comments

Comments
 (0)