Skip to content

deps: claude-agent-sdk 0.2.179 and the pytest-asyncio floors (Dependabot #45 #46 #47), and the investigator's guards fail closed - #49

Merged
itswl merged 2 commits into
mainfrom
deps-2026-11-09
Nov 9, 2026
Merged

itswl merged 2 commits into
mainfrom
deps-2026-11-09

Conversation

@itswl

@itswl itswl commented Nov 9, 2026

Copy link
Copy Markdown
Owner

Dependabot's #45, #46 and #47 raised three floors to the versions the locks already held: claude-agent-sdk to 0.2.176 for the investigator, pytest-asyncio to 1.4.1.post1 for the pipe and the judge. Relocked here as one change, floors taken to the newest, with a second commit for an option the newer SDK brings.

Versions.

package service before after
claude-agent-sdk investigator 0.2.176, CLI 2.1.316 0.2.179, CLI 2.1.319
pytest-asyncio pipe, judge 1.4.1.post1 1.4.1.post1 (no newer release)

Each version has its upstream tag. Nothing transitive moved. The SDK's changes since 0.2.176 are three bundled-CLI updates and one option: on_failure on hook matchers (0.2.177).

Read back from this branch's image with a recording stand-in model: the engine runs the bundled 2.1.319; a scripted turn completes; a write into results/ is refused by the input guard and no file appears; an @path in the message does not reach the model and /cost arrives as text; the tools offered are exactly the fourteen of the closed list, none deferred.

The guards fail closed. With the default, a guard callback that raised or answered in a shape the CLI rejects counted as "no decision", and the call ran. The bash, input and MCP guards are now registered with on_failure="block", so such a failure refuses the call. The telemetry hook on the same event and the hooks on other events decide nothing and keep the default. The SDK refuses to connect to a CLI that does not honour the option, so the boundary cannot revert in silence; the bundled CLI honours it, as the readback above shows. A test pins the option on exactly the three guards and a guard mutation that turns it back is caught. Not exercised: a guard made to raise on purpose, end to end; the decision note says so.

Nothing is deployed. The investigator image changes at the next release.

Supersedes #45, #46 and #47.

Gate: STACK GATE GREEN locally; CI read back before merging.

itswl added 2 commits November 9, 2026 12:37
…test-asyncio floors at 1.4.1.post1 — Dependabot #45 #46 #47 relocked

The bot raised three floors to what the locks already held. Floors take the
newest: the investigator's SDK moves from 0.2.176 to 0.2.179, which bundles
CLI 2.1.319 (0.2.177 added on_failure for hook matchers; the rest are CLI
updates). pytest-asyncio has no release past 1.4.1.post1, so the pipe's and the
judge's locks do not move. Each version has its upstream tag; nothing
transitive moved.

Read back from this change's image with a recording stand-in model: the engine
runs the bundled 2.1.319, a scripted turn completes, a protected write is
refused, prompts stay verbatim, and exactly the fourteen tools of the closed
list are offered, none deferred.
…no decision

The SDK this relock brings (0.2.177+) lets a hook matcher say what a failing
callback means. The bash, input and MCP guards now say "block": a guard that
raises, or answers in a shape the CLI rejects, makes the CLI refuse the call,
where it used to count as no decision and the call ran — the gate fell open
exactly when it was broken. The telemetry and audit hooks decide nothing and
keep the default. The SDK refuses to connect to a CLI that would not honour the
option, so this cannot revert in silence.

A test pins the option on exactly the three guards, a guard mutation turns it
back to "continue", the containment row and the README say so, and a decision
note records what was and was not exercised.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant