npm / inngest
inngest
What changed in inngest 4, from its official release notes, upgrade guides and advisories. Sources checked 2026-11-02.
5 breaking1 security8 new APIs and options4 behavior and defaults4 fixes and other
See which of these apply to your code, ranked, in your agent:
npx @unstale/cli initinngest 422 changes
Breaking changes 5
Sandboxes are destroyed by ID when their scope ends, including when a run is cancelled or times out; errors after destruction are not retried because retries could not use the sandbox.
Destroys the sandbox by ID when its scope ends, including on cancellation or timeout; errors after destruction are not retried.
Scores are sent as one per-name metadata kind with a { value } payload, requiring a server that accepts per-name score kinds.
SDK warnings are sent as one per-code metadata kind, requiring a server that accepts per-name warning kinds.
No longer accepts stepId because experiment scores must be run-scoped, as the REST API already enforces.
Security 1
The notes recommend using secrets on create for tokens, injecting workspace secrets without exposing them.
New APIs and options 8
Adds experimental command shims that let a handler run before a program in the sandbox, perform privileged work, run or refuse the command, and return a result.
Adds a shim configuration helper for providing settings to sandbox commands.
Experimental sandbox handles provide a command interface; non-zero exits throw, exitCodes can allow other codes, and getCommandError reads command details from a failed command.
Accepts exitCodes to allow non-zero command exit codes.
Experimental static middleware hook returns functions that serve() and connect() add to the app unless it already serves one with the same ID; nothing is added without the middleware on the client.
Reads the command, exit code, and output tails from a failed command that reaches a handler as a StepError.
Experimental API returns typed step and group globals that can be imported anywhere instead of passed around, including sandbox, fetch, and middleware-added tools.
Converts sandbox tools to name, description, and JSON Schema definitions shaped for Anthropic's tools parameter, without requiring manual Zod conversion.
Behavior and default changes 4
Commands with tools or shims can now run longer than five minutes.
Timeouts over five minutes run the command as a process that the steps follow; output.originalBytes on the result is then optional.
Sandbox commands appear as one [$] row each in traces, and command output is displayed as readable text.
Environment values passed to sandbox calls no longer appear in run traces; only variable names are recorded, while the sandbox still receives the real values.
Fixes and other changes 4
Re-creating functions with the same ID now replaces the old definition in client.funcs, fixing memory growth.
Calling connect() without functions now warns and uses the latest definition instead of throwing Duplicate function ID.
Ignores and warns about a returned stepId when the parent was deferred with an experiment, so scores land on the run read by the experiment view.
Sandboxes created with a plain step.sandbox.create() are left running for you to keep.