Skip to content

v16.26.1

Choose a tag to compare

@dyoshikawa dyoshikawa released this 09 Sep 06:54
· 764 commits to main since this release
Immutable release. Only release title and notes can be modified.
bc6fda8

What's Changed

A small maintenance release. Both fixes are the same shape: a key the tool documents, that rulesync silently dropped when it rewrote the file.

Qwen Code: tools.eager survives an import

QWEN_OVERRIDE_TOOLS_KEYS is a curated allow-list on the import path, and eager was missing from it. generate spreads the existing qwencode block and so preserved a hand-written value, but an import → generate round trip erased it — the asymmetry that turns an unnoticed upstream addition into data loss.

tools.eager (added in Qwen Code v0.22.3) names the tools that stay eager; every other eager-by-default tool is demoted to deferred. Two details matter when you author it:

  • an explicit [] defers every non-exempt tool, while omitting the key means no restriction at all, and
  • unlike tools.visible and tools.disabled, it carries no MergeStrategy.UNION, so it takes the default replace: a workspace list stands in for a user one rather than adding to it.

Both directions are covered by the scope note the key now carries, since for this key the risky edit is as often the one that widens as the one that restricts.

Reasonix: concurrency and auto_start are no longer deleted on generate

Rulesync owns the whole plugins key of reasonix.toml, so a [[plugins]] field it does not model is removed the next time it writes the file. For these two that deletion changes behavior rather than losing a hint:

  • concurrency (serial / parallel) decides whether two calls to one server may overlap. With no value Reasonix substring-matches the server name against a known-stateful list — browser, playwright, puppeteer, chrome, chromium, selenium — and serializes a match, so dropping the key does not fall back to a neutral default: it hands the decision back to the name. A serial dropped from a stateful server the list does not catch puts it on the parallel path; a parallel dropped from one the list does catch forces it serial.
  • auto_start = false switches a server off rather than deferring it: Reasonix drops it from the enabled set, so its tools never reach the model, and only an explicit re-enable brings it back. Dropping the key switches the server back on.

Both round-trip as passthrough fields on the canonical MCP server object, alongside the startup_timeout_seconds / call_timeout_seconds / tool_timeout_seconds fields that already worked that way.

Contributors

Full Changelog

v16.26.0...v16.26.1