4 improvements, 1 bug fix, and 5 server changes.
Highlights
Node 24 and 26
node-24 and node-26 are now stable runtime options in trigger.config.ts. (#4337)
import { defineConfig } from "@trigger.dev/sdk";export default defineConfig({ runtime: "node-24", project: "<your-project-ref>",});
Chat agent turn loop improvements
Custom chat agent loops get two ergonomic wins for owning the turn loop. (#4304)
chat.writeTurnComplete() now returns the turn boundary's resume cursors (lastEventId for the output stream and sessionInEventId for the input stream), so you can persist them straight from the task instead of round-tripping them back from the client:
const { lastEventId, sessionInEventId } = await chat.writeTurnComplete();await db.chats.update(chatId, { lastEventId, sessionInEventId });
chat.pipeAndCapture() no longer throws when a stream is stopped or fails. It now returns a PipeAndCaptureResult with message (any partial output captured before the stop), a typed status ("complete" | "aborted" | "error"), and the error on failure:
const { message, status, error } = await chat.pipeAndCapture(result, { signal });if (message) conversation.addResponse(message);if (status === "error") logger.error("turn failed", { error });
Note: pipeAndCapture previously resolved to UIMessage | undefined. Update call sites to read .message from the returned result.
Improvements
- Task run environment variable values are no longer logged at debug level. (#4336)
- Suppress the build-time warning for the optional
@ai-sdk/otelpackage when it is not installed in Vite-based projects. (#4188)
Bug fixes
- Fix intermittent
trigger devlocal run crashes where a run would fail at boot withCannot find module .../dev-run-worker.mjsafter a rebuild had cleaned up the build directory. Dev runs now retry cleanly when their build directory is missing, the watchdog no longer removes the build tree of a still-running session, and a run assigned to a superseded worker version now fails fast with a clear message instead of silently hanging until timeout. (#4276)
Server changes
These changes are included in the v4.5.7 Docker image and are already live on Trigger.dev Cloud:
- Refreshed the side menu: separate organization and account menus, a new project switcher, and the menu is now resizable by dragging its edge. The account Profile page has also been redesigned. (#4066)
- Allow different organization members to use the same development branch name without sharing or colliding with each other's branch environments. (#4323)
- Limit account settings email input to 254 characters. (#4330)
- Prevent duplicate Staging and Preview environments when account setup requests overlap. (#4261)
- Fix the docs link on the empty Prompts page, which pointed to a page that no longer exists. (#4247)
How to upgrade
Update the trigger.dev/* packages to v4.5.7 using your package manager:
npx trigger.dev@latest update # npmpnpm dlx trigger.dev@latest update # pnpmyarn dlx trigger.dev@latest update # yarnbunx trigger.dev@latest update # bun
Self-hosted users: update your Docker image to ghcr.io/triggerdotdev/trigger.dev:v4.5.7.




