Repository navigation
feat(paseo): bump pinned Paseo CLI to 0.12.0 - #504
Conversation
Update the two-value version pin (PASEO_CLI_VERSION in spec.yaml and the fallback default in paseo-start.sh) from 0.10.2 to 0.12.0. 0.11.0 and 0.12.0 fix OpenCode v2 under Paseo, which the opencode kit installs since 2.0.22: agents stuck after a dismissed question or denied permission (#6177, #6188), first-run v2 failures, multi-select answers (#6149), daemon OOM on long v2 streams (#6262), and HTTP 500s instead of Paseo tool errors (#6519, #7183). 0.11.0 also fixes `paseo daemon status` reporting a running daemon as stopped after the host wakes (#6279). Release notes reviewed: the daemon launch surface this kit uses (`paseo daemon run`, `daemon restart`, config.json settings) is unchanged. The breaking changes don't touch the kit: `paseo plugin add owner/repo` now installs from the registry (0.11), `paseo run --background` is deprecated for `--no-wait`, and `paseo permit allow|deny` exit non-zero when unconfirmed (0.12). Verification: paseo node tests (16/16), validate-kits.py --strict, and the live RUN_ACQ=1 verify (msb 0.7.8, acq 4.0.2) pass.
wz-gsa
left a comment
There was a problem hiding this comment.
AI-assisted review (OpenCode), verified independently against head 1646a82c5fb484d5594ff70d5c8396ae74533671.
Approving. I reviewed this in an isolated worktree and verified every load-bearing claim by execution rather than by reading the release notes.
Verified
Pin consistency. All three live occurrences agree at 0.12.0: spec.yaml:189, and the comment plus _ver default at files/home/paseo-start.sh:35,81. A repo-wide sweep for 0.10.2 returns only the historical CHANGELOG.md:59 release entry.
Publication and integrity. @getpaseo/[email protected] is published and resolvable, latest, 2026-10-19T06:48:31Z. The kit's integrity chain is unchanged from 0.10.2: version pin, registry.npmjs.org over the proxy, npm's own dist.integrity. There is no npm provenance attestation for either 0.12.0 or 0.10.2, so nothing regressed.
Cited breaking changes do not reach the kit. Grepping the whole kit, plugin, --background, no-wait, and permit have zero invocation sites. The only CLI calls are paseo daemon config set, paseo daemon run, paseo daemon restart, and paseo --version.
Daemon surface. I unpacked both tarballs and diffed them. commands/daemon/{start,status,stop,reload,pair,config,local-daemon,index}.js, daemon-worker.js, daemon-instance.js, daemon-config-store.js, auth.js, and utils/client.js are byte-identical, and the HTTP route table is unchanged. The three settings asserted in paseo-assert-daemon-config.mjs still parse and default identically.
Offline gates. validate-kits.py --strict 10 kits plus 2 templates, paseo node tests 16/16, kit scripts/verify 8/8, validate_repo.py, INDEX/CATALOG --check, scan_unsafe_shell.py, and pytest scripts/ 483 passed. Markdown lint is unmeasured here because .github/linters/node_modules is absent and I could not install offline; CI covers it and is green 7/7.
Two corrections to the PR body, neither blocking
commands/daemon/restart.js is not unchanged. It has one substantive delta: the replacement-worker status probe moved from timeout: Math.min(1000, remaining()) to timeout: remaining(). The CLI surface is unchanged, so the claim holds in spirit. This delta matters for your observed flake, and it points the right way, see below.
0.12.0 unconditionally loads twelve bundled plugins at daemon boot, before the pluginsEnabled gate that governed this in 0.10.2. Three of them reach api.openai.com, code.claude.com, and opencode.ai, which the kit's allowlist does not permit, so the proxy resets them. Residual risk is low: the sandbox holds no Claude, Codex, or OpenCode-Go credentials, USAi injects via env rather than auth.json, the relay is already disabled, and each plugin start is individually caught and logged. I also confirmed empirically that esbuild works under the kit's npm_config_ignore_scripts=true, because the platform binary resolves through script-free optional deps. Worth a documentation note so the next reader does not re-derive it.
On the intermittent restart failure
Your one-off is consistent with a known mechanism, and 0.12.0 is the fix side of it. restart.js confirms by reconnecting and comparing worker PIDs; under 0.10.2 that status probe was capped at one second while daemon status enumerates every provider through PATH resolution. On a cold first boot that cap is easy to exceed, producing RESTART_NOT_CONFIRMED even though the restart landed, which is exactly what you saw. 0.12.0 raises the cap to the full remaining deadline, so this should get less frequent rather than more.
The residual edge is in the kit's fallback, not in Paseo: files/home/paseo-agent-shim:131-146 kills every non-marker paseo daemon run and unlinks paseo.pid whenever the CLI reports failure. When the restart actually succeeded, that tears down a healthy worker. It is bounded and self-healing, and you observed the recovery, but in a sandbox with a live agent session it would kill that session. Pre-existing and not introduced here.
Suggested follow-ups, not changes to this PR
- Document the always-on bundled-plugin layer at
0.12.0, the three out-of-allowlist hosts, and the verified esbuild-under---ignore-scriptsbehavior. - Harden the
paseo-agent-shimfallback to confirm the daemon is genuinely wedged before the kill-and-unlink path. - Add a validator assertion that
spec.yaml'sPASEO_CLI_VERSIONequals thepaseo-start.shfallback default. Nothing currently enforces the documented two-value edit.
I did not run the live RUN_ACQ=1 path; no acq or msb backend is available in this environment, so your live verification is the only end-to-end evidence and I take it as reported.
🤖 I have created a release *beep* *boop* --- ## [1.14.0](v1.13.0...v1.14.0) (2026-10-19) ### Features * **paseo:** bump pinned Paseo CLI to 0.12.0 ([#504](#504)) ([0c5258e](0c5258e)) ### Bug Fixes * **acq-kits:** bump opencode kit to OpenCode 2.0.30 ([#499](#499)) ([c9d2281](c9d2281)) * **acq-kits:** give verify scripts a "could not check" verdict state ([#460](#460)) ([306906a](306906a)) --- This PR was generated with [Release Please](https://github.com/googleapis/release-please). See [documentation](https://github.com/googleapis/release-please#release-please). Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
## Summary Moves `PATTERNS_KIT_REF` from v1.12.0 (`56d1f5f`) to agentic-coding-patterns v1.15.0 (`f3c6acb`), so the built-in kit bundle picks up: - **opencode kit → OpenCode 2.0.30** (GSA-TTS/agentic-coding-patterns#499). OpenCode 2.0.0–2.0.29 ignore config `instructions` (anomalyco/opencode#51341, fixed in 2.0.30), so a sandbox on an image without a baked OpenCode (`devenv-shell`, or the `devenv-shell` default proposed in #584) currently runs the bundled 2.0.22 and silently drops `instructions`-based conventions. - **paseo kit → Paseo 0.12.0** (GSA-TTS/agentic-coding-patterns#504): fixes for OpenCode v2 under Paseo (daemon OOM on long v2 streams, multi-select answers, HTTP 500s instead of tool errors) and the host-sleep daemon-status fix. - **Kit verify scripts gain a "could not check" verdict** (GSA-TTS/agentic-coding-patterns#460); it only affects kit verify output. Also v1.13.0: usai-provider's host-side catalog normalizer (#436), the paseo identity-gate script (#453), and the team-kit and personal-kit templates under `acq-kits/examples/`. None changes what acq applies by default beyond the two kits above. Also v1.15.0: refreshed usai-provider model catalog (GSA-TTS/agentic-coding-patterns#519, GSA-TTS/agentic-coding-patterns#484), the OpenDesign opt-in kit (GSA-TTS/agentic-coding-patterns#438), and the provider-neutral input contract (GSA-TTS/agentic-coding-patterns#518). acq's provider-facts loader reads `provider-facts/usai.env`, which v1.15.0 does not change. The doc examples and Bats assertions that spell the pin move with it. KNOWN_FAILURE_MODES §9 now names 2.0.30 as the version the kit installs and notes its 15-minute default `chunkTimeout` (the timeout message and retry limits are unchanged from 2.0.22). ## Verification On the v1.15.0 pin: - Focused Bats: `135-configure`, `95-kit-ref-persistence`, `36-agent-catalog`, `50-kit-list-completeness` (63/63) - markdownlint on the changed docs On the earlier v1.14.0 pin (not re-run for v1.15.0): - `npm run lint:md` - `RUN_ACQ=1 scripts/verify-backends --only msb` on macOS, msb 0.7.8: 16 passed, 1 skipped (playbook fetch, no `gh` login), run with `TMPDIR` set to its resolved `/private/var/...` path to get past an unrelated create failure that also hits `main` (#594) - Downstream, with this pin on msb 0.7.8 and `ACQ_IMAGE=devenv-shell:1.0.0`: a team kit's end-to-end verify passed 71/71 (OpenCode 2.0.30 runs and loads `instructions`); with the paseo kit added, Paseo 0.12.0 drove an OpenCode 2.0.30 agent that received the team `instructions`, and its sessions survived a backup, `acq rm`, recreate and restore ## Rollback Revert this PR to restore the v1.12.0 bundle.
Summary
Bumps the
paseoacq kit from Paseo 0.10.2 to 0.12.0:PASEO_CLI_VERSIONinspec.yamland the fallback default inpaseo-start.sh.0.11.0 and 0.12.0 fix OpenCode v2 under Paseo, which matters now that the
opencodekit installs v2 in every OpenCode sandbox: agents stuck after a dismissed question or denied permission (getpaseo/paseo#6177, #6188), multi-select answers (#6149), daemon OOM on long v2 streams (#6262), and HTTP 500s instead of Paseo tool errors (#6519, #7183). 0.11.0 also fixespaseo daemon statusreporting a running daemon as stopped after the host wakes from sleep (#6279).The daemon launch surface the kit uses (
paseo daemon run,paseo daemon restart, theconfig.jsonsettings) is unchanged. The release notes' breaking changes don't touch the kit:paseo plugin add owner/repoinstalls from the registry (0.11),paseo run --backgroundis deprecated in favor of--no-wait, andpaseo permit allow|denyexit non-zero when the daemon doesn't confirm (0.12).Verification
validate-kits.py --strictpass.RUN_ACQ=1kit verify (msb 0.7.8, acq 4.0.2): all checks pass.opencodekit at 2.0.30 ondevenv-shell:1.0.0: Paseo 0.12.0 ran an OpenCode 2.0.30 agent with the team config, and the session survived a backup, a wipedopencode.db, and a restore, then answered a follow-up.acq run, the wrapper'spaseo daemon restart --timeout 30reported failure and the kit fell back to the supervisor respawn, which worked; the daemon log shows the restart went through. A manualpaseo daemon restartafterwards succeeded in under 4 s.Eligibility & Accountability
@GSA-TTS/agentic-coding-teamcode-owner approval; eligibility is attested here, not authenticated).AI Assistance Disclosure