Skip to content

feat(providers): verify OpenCode 1.18.32 for the deny-all policy - #613

Merged
rng1995 merged 1 commit into
NVIDIA:mainfrom
Yoseph-Zuskin:feat/opencode-1.18.32
Sep 28, 2026
Merged

rng1995 merged 1 commit into
NVIDIA:mainfrom
Yoseph-Zuskin:feat/opencode-1.18.32

Conversation

@Yoseph-Zuskin

Copy link
Copy Markdown
Contributor

Verify OpenCode 1.18.32 for the deny-all policy

Problem

opencode_cli fails closed on any runtime but exactly 1.18.31. OpenCode
1.18.32 is out, so the provider currently refuses to run on latest — the
pin did its job, and now needs re-verification against the new release.

Fixes: #612

Approach

  • Bump _OPENCODE_SUPPORTED_VERSION 1.18.31 → 1.18.32 plus all version
    references (code comments, test fixtures, README pin note,
    docs/DEVELOPMENT.md). No behavior, flag, or policy changes:
    run --help output is identical across the bump.
  • No rejection-test repair needed this time: both synthetic cases
    already fake 1.18.99, wrong under either pin.

Verification

  • tests/provider/test_opencode_cli.py: 41 passed / 3 skipped,
    ruff + format clean.
  • Version gate passes on real 1.18.32 (_opencode_auth_check
    returns (True, None) against the installed binary).
  • Raw default-model inference on 1.18.32 returns the exact nonce
    with a valid event envelope and empty temp cwd.
  • Full provider-path inference stays blocked by the known
    isolation × auth limitation (HOME/XDG redirect hides auth.json;
    deny-all agent trips Zen-free 403) — pre-existing and
    version-independent, identical code pre/post bump. Two Groq
    model IDs tried for the probe are retired server-side (404).

Risks

  • Re-verification, not re-implementation: if 1.18.32 altered any security
    behavior silently, this bump would bless it. Mitigation: flags diffed
    identical, version gate + resolved-config audit + adversarial tests all
    still pass unchanged.
  • DCO: all commits carry Signed-off-by (maintainer: verify on push).

- Bump _OPENCODE_SUPPORTED_VERSION 1.18.31 -> 1.18.32 plus all
  version references (code comments, test fixtures, README pin
  note, DEVELOPMENT); run --help flags identical across the bump,
  no policy changes
- Verified: file suite 41 passed / 3 skipped; ruff + format clean;
  version gate passes on real 1.18.32; raw default-model inference
  returns the exact nonce with valid envelope
- Note: full provider-path inference stays blocked by the known
  isolation x auth limitation (pre-existing, version-independent);
  Groq llama-3.3-70b-versatile and llama-3.1-8b-instant are retired
  server-side (404), use current IDs for future probes

Fixes NVIDIA#612

Signed-off-by: Yoseph Zuskin <[email protected]>
Co-Authored-By: OpenCode Muse Spark 1.3 Free (1M context) <[email protected]>

@rng1995 rng1995 left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[SkillSpector Review]

Hi @Yoseph-Zuskin, thank you for your contribution to SkillSpector — we really appreciate it!

This PR bumps _OPENCODE_SUPPORTED_VERSION from 1.18.31 to 1.18.32 and updates every non-historical version reference: code comments, the test comment and banner fixture, README, and docs/DEVELOPMENT.md.

What I checked:

  • Version gate: the logic is unchanged. _parse_opencode_version full-matches a plain X.Y.Z, and both _opencode_auth_check and _preflight_opencode_policy require exact string equality. Only 1.18.32 is accepted; suffixed, pre-release and all other versions (now including 1.18.31) still fail closed.

  • Deny-all envelope: untouched. That covers the isolated environment, the per-invocation agent, the inline config, OPENCODE_PERMISSION and the debug config preflight.

  • Upstream delta: I reviewed anomalyco/opencode v1.18.31...v1.18.32 (51 commits). The changes that affect the CLI are limited to:

    • Bedrock image-attachment hoisting (session/message-v2.ts)
    • the @ai-sdk/togetherai bump
    • npm plugin entrypoint resolution under Node (core/src/npm.ts). The Bun branch is unchanged, and plugins are disabled here anyway.
    • an import-only refactor of core filesystem search

    Nothing touches config loading or precedence, permission merging, the OPENCODE_* variables (including the internal OPENCODE_TEST_HOME and OPENCODE_TEST_MANAGED_CONFIG_DIR overrides), debug config, or the run flags. That is the same bar applied when #575 moved the pin to 1.18.31.

  • Tests: the rejection cases still fake 1.18.99, which is unsupported under either pin, and the acceptance fixtures use the constant. These tests run in CI (no provider marker).

  • Merge: the head merges cleanly with current main, and no other OpenCode version pin exists in CI or .opencode/.

Findings

  1. [Non-blocking] src/skillspector/providers/_agent_cli.py:463: OpenCode v1.18.33 was published on 2026-09-28, so latest-version users will be refused again as soon as this lands. Each single-version bump also drops the previously verified release, so 1.18.31 users have to upgrade in lockstep. Consider a follow-up that keeps exact matching (never ranges) but accepts an explicit set of individually verified versions.
  2. [Non-blocking] Verification evidence: the description says full provider-path inference could not be run on 1.18.32. Given the upstream delta, a semantic change is very unlikely, and the runtime debug config preflight still fails closed on drift. Still, please record that _preflight_opencode_policy passes against the real 1.18.32 binary; it needs neither auth nor inference. --version and auth list do not check the resolved deny-all config, and a preflight mismatch would make the provider fail closed for every 1.18.32 user. The auth-isolation limitation noted in the description is worth tracking in its own issue, since it blocks live re-verification of future bumps.
  3. [Non-blocking] The 2.12.0 release notes say OpenCode 1.18.31 is required. The next release notes should call out the move to 1.18.32, since 1.18.31 is now rejected.

Tests/CI: All six checks pass. This was a static review; contributor code and tests were not run locally.


Decision: Approved (reviewed head 1d60524f583fd4fcd565503788676395b2d7e3c6)

@rng1995
rng1995 merged commit dbfd4fb into NVIDIA:main Sep 28, 2026
6 checks passed
@Yoseph-Zuskin
Yoseph-Zuskin deleted the feat/opencode-1.18.32 branch October 4, 2026 00:15
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.

OpenCode 1.18.32 Pin Re-verification (opencode_cli)

2 participants