Repository navigation
Build jailed stdio on tinybox-bus v0.2.5 so the shipped TinyBox is accepted - #171
Conversation
…cepted tinymcp still named tinybox-bus tag v0.1.36 (contract 1.21), and is_compatible needs the module's major to match. openhuman ships TinyBox 2.x (v0.2.5, contract 2.3, and since its latest pin bump v0.2.6, 2.4), so JailedSpawner::launch refused every jailed stdio server before reserving anything. In openhuman that is every registry or mcp.json stdio server. Move the dependency to tag v0.2.5 (contract 2.3). Its is_compatible accepts 2.3 and 2.4 modules, so it works with both TinyBox releases openhuman has shipped. A newer tag would raise the required minor past an older shipped module, so the manifest comment says so. The refusal said "the sandbox module is too old for jailed stdio", which was wrong here, since the module was newer. It now names both versions. Closes tinyhumansai#169
deny.toml ignored RUSTSEC-2026-0367, 0368 and 0369 because zip 2.4.2 came in through the vendored tinybus. The vendored tinybus has since moved on and Cargo.lock no longer contains zip at all, so cargo-deny reports the three entries as advisory-not-detected. Remove them, as their own comment asked, so a future zip advisory is not silently ignored.
|
Important
This repository does not receive automatic reviews because it has fewer than 10 stars.
|
Tiny Sweeper reviewReviewed head: Verdict: Ready for maintainer review · Priority: none Diagnostics and supporting detailsFull summaryPull request purpose (title): Build jailed stdio on tinybox-bus v0.2.5 so the shipped TinyBox is accepted. Purpose (from the pull-request title): build jailed stdio on tinybox-bus v0.2.5 so the shipped TinyBox is accepted. The pull request fixes jailed stdio MCP servers being refused before launch: tinymcp pinned tinybox-bus v0.1.36 (contract 1.21), and `is_compatible` requires the module's major to match, so every TinyBox 2.x module (contract 2.3/2.4) was rejected before anything was reserved. The dependency moves to tag v0.2.5 (contract 2.3), whose `is_compatible` accepts 2.3 and 2.4; the jail request gains `resources: None` for the new `NativeJailConfig` field; the refusal error now names both the module's contract and the required one instead of calling a newer module "too old"; the stdio-sandbox spec table is updated; and three stale `deny.toml` advisory ignores are removed. Cargo.lock was not reviewed (5 of 6 files covered). Unreviewed paths
Review snapshot
Completeness: Complete What changedJailed stdio now builds against tinybox-bus v0.2.5 (contract 2.3) instead of v0.1.36 (contract 1.21), so TinyBox 2.3 and 2.4 modules start instead of being refused. The jail request sends `resources: None` to satisfy the new `NativeJailConfig` field. Incompatible modules are still refused before any resource is reserved, but the error reports both the module's contract version and the required one rather than describing a newer module as too old. The stdio-sandbox spec row documents the contract and the refusal behavior, and `deny.toml` starts from an empty advisory ignore list. The description lane answered that the diff matches its description and characterizes the unverified claims as caveats. Features
Tests
FindingsNo active actionable findings. Before mergeNone. Agent review detailscritique
security
tests
commits
description
Evidence and run details
|
Summary
Every jailed stdio MCP server was refused before it launched. tinymcp named
tinybox-bustag v0.1.36 (contract 1.21), andis_compatibleneeds the module's major to match. OpenHuman ships TinyBox 2.x (v0.2.5, contract 2.3; since its latest pin, v0.2.6, 2.4). SoJailedSpawner::launchrefused before reserving anything, with "the sandbox module is too old for jailed stdio". In OpenHuman that's every registry ormcp.jsonstdio server. We reproduced it in a running headless OpenHuman core, where the server's status showedstatus: "error", tool_count: 0with that message.This moves the dependency to tag v0.2.5 (contract 2.3), whose
is_compatibleaccepts both 2.3 and 2.4 modules. A newer tag would raise the required minor past an older shipped module, and the manifest comment says so. The refusal now names both versions instead of calling a newer module "too old". A second commit drops three staledeny.tomlignores for a zip version that's no longer in the tree.Related issue
Closes #169. Supersedes the lock-only dependabot #160, which can't move a git-tag requirement and fails
--locked.API or behavior changes
tinybox-busv0.1.36 → v0.2.5 (git tag on official main).Cargo.lockchanges only that entry, plus one dependency line inside it (schemars, already in the lock).NativeJailConfiggainedresourcesin tinybox-bus 2.x; jailed stdio sendsresources: None, so the request's wire form is unchanged.deny.toml: the RUSTSEC-2026-0367/0368/0369 ignores are removed. cargo-deny reported them as advisory-not-detected.Validation
On our Linux CI runner (toolchain 1.99.1), on this branch from main e098e53:
cargo fmt --all -- --check: cleancargo clippy --locked --all-targets --all-features -- -D warnings: 0 errors (main: 0)cargo build --locked --all-targets --all-features: ok;RUSTDOCFLAGS="-D warnings" cargo doc --no-deps --all-features: cleancargo test --locked --all-features -p tinymcp jailed: 25 passed, 0 failedcargo test --locked --all-features --workspace: 1579 passed, 1 failed. The failure isdirectories::test::reconfiguration_waits_for_an_in_flight_tool_call_before_replacing_the_service, a timing flake that also fails on main in full-suite runs and passes alone.cargo deny check: only RUSTSEC-2026-0459 (libsqlite3-sys, via tinystoragedrivers; same on main, fixed separately). The three advisory-not-detected warnings main shows are gone.cargo update -p tinybox-bus), and every command above ran with--locked.Cargo.tomlandCargo.lock(tinybox-bus v0.1.36) put back,the_tinybox_contracts_openhuman_ships_start_a_jailed_servercompiles and fails:contract (2, 3): ... the sandbox module speaks contract 2.3, but jailed stdio needs 1.21 or a later 1.x. That's the refusal this PR removes, now worded with both versions.Tests
the_tinybox_contracts_openhuman_ships_start_a_jailed_serverstarts a jailed server against TinyBox contracts 2.3 and 2.4. With main'sCargo.tomlandCargo.lock(bus 0.1.36) it fails.a_refused_contract_names_both_versionschecks the message, and that CAPABILITIES is the only bus call made.Documentation
docs/specs/stdio-sandbox.mdnames the contract the jail speaks.Checklist
#[allow(...)],#[ignore], or relaxed lints.envcontents in the diff or the description