Rush runs the batch runtime exclusively. The legacy execution path, its
async_jobs ledger and the job_output / job_kill control tools were
removed; there are no aliases and no blocking validation of unknown tool
names. This note covers what to update when upgrading.
| Removed legacy tool | Native replacement |
|---|---|
job_output (poll a background job's output) |
batch_status (root and task node_ids) and batch_output (paged output by cursor) |
job_kill (stop a background job) |
batch_stop (whole root, or one node_id) |
No compatibility aliases exist: a call to job_output or job_kill
resolves nothing at all. Unknown tool names are never an error at startup
or configuration load; they are simply inert.
Configuration carries tool names in three places with different semantics. After the legacy-tool removal, each kind fails differently — and only one of the three fails loudly anywhere:
- Availability in the SDK/memory (
AllowedTools). The resolved tool list a session is built from. A name here that no build produces anymore simply contributes nothing: the tool is absent, so the model cannot call it. A stale legacy name here is silently ineffective — the intended capability disappears rather than erroring. permissions.allowed_tools(permission bypass). An exacttoolortool:actionmatch grants the tool without a permission prompt. A stale legacy name never matches any executed tool call, so the grant becomes silently ineffective: no prompt is bypassed, and — depending on the run's permission mode — calls to the native replacement may start prompting (or being denied in non-interactive runs) where the legacy grant used to admit them.options.disabled_tools(filter membership, not validated). Names here are removed from the resolved tool list; membership is a plain filter and is NOT validated against the build's tool set. A stale legacy name disables nothing, but unlike the two above it can leave a gap in the opposite direction: if your intent was "disable background-job control", the legacyjob_killentry no longer stops anything while the native replacements (batch_stop,batch_output,batch_status) remain enabled.
Replace every job_output / job_kill occurrence in all three lists
with the native names from the table above. There is no blocking
validation that would remind you at startup: stale grants become
silently ineffective, and stale disabled_tools entries leave the
native replacements enabled. Targeted deprecation warnings for known
stale names are desirable and may be added later, but they are and
remain non-blocking diagnostics — never an error and never a behavior
change.
For the store migration, import/rollback semantics and the operational steps around upgrade, see jobbatch.md and the README batch section.