# Trigger.dev changelog > An open-source background jobs platform with no timeouts and durable runs. - Vendor: Trigger.dev - Category: Developer Tools - Official site: https://trigger.dev - Tracked by: What's New (https://whatsnew.fyi/product/trigger-dev) - Harvested from: GitHub (triggerdotdev/trigger.dev) - Entries below: 10 (newest first) What's New is an index, not a publisher: every entry below links to the vendor's own release notes, which are the authoritative source. Entries are labelled where they are hand-curated sample data, pre-releases, or drawn from a secondary source such as a developer blog. Reuse: the summaries, labels and curation here are © What's New. Quote freely with attribution and a link back; wholesale republication of the corpus is not permitted — terms: https://whatsnew.fyi/terms. The vendors' own release notes remain their publishers'. ## Releases ### v4.5.10 — trigger.dev v4.5.10 - Date: 2026-08-07 - Version: v4.5.10 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.10 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.10 - **added** — Allow task-scoped environment API keys to run batch operations for their permitted tasks - **added** — Export additional-key format helper from @trigger.dev/core/v3/apiKeys - **changed** — Refresh package builds for TypeScript 7 compatibility while preserving existing runtime entry points - **changed** — AgentChat.reconnect() now settles promptly when reconnecting to an idle chat instead of holding the connection open for the full long-poll window - **changed** — Upgrade S2 streamstore client to 0.25 and move realtime streams to S2's current hosts - **added** — Allow choosing the region a run executes in when triggering a task through the MCP server - **changed** — Retry transient connection errors when a run starts for longer so a brief connectivity blip no longer delays its first attempt - **fixed** — Fix debounce to work when passing an array of items to batchTrigger or batchTriggerAndWait and when triggering from useTaskTrigger - **fixed** — Fix a chunk occasionally dropped when a chat.agent run takes over from the warm first turn - **fixed** — Fix a preloaded chat.agent run dropping an in-flight message when it retries after an out-of-memory error - **added** — Allow self-hosted deployments to create multiple full-access API keys for each environment - **added** — Short links like /_/apikeys now take you straight to that page in your current project and environment - **changed** — Dashboard gets a refreshed Dark theme as its new default look with Light, System preference, and Classic options available - **added** — Additional environment API keys can now create scoped public access tokens - **changed** — Additional environment API keys can authenticate API requests using their configured permissions with revoked and expired keys rejected - **added** — Self-hosted Kubernetes deployments can now add tolerations to run pods - **changed** — Lower background database load during deployments and dev sessions for projects that use declarative schedules - **changed** — Triggering a task now does one fewer database write so runs reach the queue slightly faster - **changed** — Creating or updating a schedule and deploying a project with declarative schedules is faster in long-lived projects with many deploys #### trigger.dev v4.5.10 ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.10`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1108758079?tag=v4.5.10) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-10 ##### What's changed ##### Highlights - Allow task-scoped environment API keys to run batch operations for their permitted tasks. The SDK declares the batch's task set before creation, and `@trigger.dev/core/v3/apiKeys` now exports the additional-key format helper. ([#4389](https://github.com/triggerdotdev/trigger.dev/pull/4389)) ##### Improvements - Refresh package builds for TypeScript 7 compatibility while preserving existing runtime entry points. Projects using `emitDecoratorMetadata()` with TypeScript 7 can install the `@typescript/typescript6` compatibility package alongside it; the package remains optional, so installing the Trigger.dev CLI does not install an additional compiler. ([#4318](https://github.com/triggerdotdev/trigger.dev/pull/4318)) - `AgentChat.reconnect()` now settles promptly when reconnecting to an idle chat instead of holding the connection open for the full long-poll window. Also upgrades the S2 streamstore client to 0.25 and moves realtime streams to S2's current hosts. ([#4349](https://github.com/triggerdotdev/trigger.dev/pull/4349)) - You can now choose the region a run executes in when triggering a task through the MCP server. ([#4439](https://github.com/triggerdotdev/trigger.dev/pull/4439)) - Transient connection errors when a run starts are now retried for longer, so a brief connectivity blip no longer sends the run back through the queue and delays its first attempt. ([#4441](https://github.com/triggerdotdev/trigger.dev/pull/4441)) - `debounce` now works when you pass an array of items to `batchTrigger` or `batchTriggerAndWait`, and when you trigger from `useTaskTrigger`. Previously the option was accepted by the types and dropped before the request was sent, so every trigger created its own run instead of collapsing onto the debounce key. ([#4520](https://github.com/triggerdotdev/trigger.dev/pull/4520)) ```ts await myTask.batchTrigger([ { payload: { id: "a" }, options: { debounce: { key: "same-key", delay: "30s" } }, }, { payload: { id: "b" }, options: { debounce: { key: "same-key", delay: "30s" } }, }, ]); ``` The streaming (async iterable) forms of the batch calls were already forwarding `debounce` correctly. ##### Bug fixes - Fix a chunk occasionally dropped when a chat.agent run takes over from the warm first turn. The realtime stream writer now reports the inclusive last-written position as the resume cursor, so the agent's first record after the handover is no longer skipped. ([#4349](https://github.com/triggerdotdev/trigger.dev/pull/4349)) - Fix a preloaded `chat.agent` run dropping an in-flight message when it retries after an out-of-memory error. The message being processed when the run hit the OOM is now recovered and re-run on the retry, instead of being skipped while the run waited for a new message. ([#4349](https://github.com/triggerdotdev/trigger.dev/pull/4349)) ##### Server changes These changes affect the self-hosted Docker image and Trigger.dev Cloud: - Self-hosted deployments can now create multiple full-access API keys for each environment. ([#4390](https://github.com/triggerdotdev/trigger.dev/pull/4390)) - Short links like /_/apikeys now take you straight to that page in your current project and environment, so you no longer need the full URL with your org, project and environment in it. ([#4523](https://github.com/triggerdotdev/trigger.dev/pull/4523)) - The dashboard gets a refreshed Dark theme as its new default look. On the account page you can switch to Light, _[Truncated at 4000 characters — full notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.10]_ ### v4.5.9 — trigger.dev v4.5.9 - Date: 2026-07-30 - Version: v4.5.9 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.9 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.9 - **changed** — Setting a queue concurrency limit higher than your environment limit is now rejected with an error instead of being silently reduced to the environment limit - **changed** — trigger mcp now always starts the MCP server, with the interactive install wizard moved behind trigger mcp --install - **added** — trigger report health command returns a verdict on whether work is flowing, runs are succeeding, and telemetry is fresh enough to trust - **added** — A queue's concurrency limit can now be set as a percentage of your environment limit from the dashboard or the API - **added** — Queue metrics page shows backlog, throughput, concurrency against limit, throttling history, and run wait times, with per-concurrency-key breakdown on individual queue pages - **changed** — Agent detail page now uses the same layout as other metrics pages with filters pinned at the top and resizable configuration panel on the right - **added** — A queue's concurrency keys are now paged and searchable instead of limited to the busiest 50 - **changed** — Prevent build debug logs from including environment variable values - **changed** — Send the running CLI version when checking for platform notifications so notices can be limited to compatible CLI releases - **fixed** — Correct the expirationTime docs on auth.createPublicToken and trigger-token helpers to clarify that a number is a Unix timestamp in seconds, not milliseconds - **added** — Self-hosted instances can now serve deployed runs' API traffic from a different origin than the public one per organization via the INTERNAL_API_ORIGIN environment variable - **fixed** — Accepting an old invitation no longer changes the role of someone who was already in the organization - **changed** — People who are already in an organization are no longer sent invitations to it - **fixed** — Invite form now says which addresses it skipped instead of failing with an unhelpful error - **removed** — Removed an unused internal dashboard sync route - **fixed** — Fixed error reports being attributed to the wrong request when several requests were in flight at once - **fixed** — Invalid queries sent to the query API are no longer treated as internal errors - **changed** — A query that fails is now recorded together with the query text that produced it #### trigger.dev v4.5.9 ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.9`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1081451083?tag=v4.5.9) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-9 ##### What's changed ##### Breaking changes - Setting a queue concurrency limit higher than your environment limit is now rejected with an error instead of being silently reduced to the environment limit, so a queue never looks like it has more capacity than it can get. Limits already saved are unchanged. ([#4131](https://github.com/triggerdotdev/trigger.dev/pull/4131)) ##### Improvements - `trigger mcp` now always starts the MCP server, and the interactive install wizard has moved behind `trigger mcp --install`. Previously the wizard opened whenever stdout was a terminal, so any MCP host that spawns the command over a pseudo-terminal waited on a server that never started and eventually timed out. ([#4131](https://github.com/triggerdotdev/trigger.dev/pull/4131)) - Ask whether an environment is healthy and get an answer instead of a wall of charts. `trigger report health` returns a verdict on three questions: is work flowing, are the runs that start succeeding, and is the telemetry fresh enough to trust either answer. When something looks wrong it names the most likely cause and a next action. ([#4131](https://github.com/triggerdotdev/trigger.dev/pull/4131)) ```bash npx trigger.dev@latest report health --env prod --period 24h ``` The verdict is computed server side, so the CLI, the new `get_report` MCP tool, and `GET /api/v1/reports/health` all return the same text with the same sparklines. In MCP hosts that support prompts, `report` is also available as a slash command. - Prevent build debug logs from including environment variable values. ([#4420](https://github.com/triggerdotdev/trigger.dev/pull/4420)) - Send the running CLI version when checking for platform notifications so notices can be limited to compatible CLI releases. ([#4407](https://github.com/triggerdotdev/trigger.dev/pull/4407)) - Correct the `expirationTime` docs on `auth.createPublicToken` and the trigger-token helpers: a number is a Unix timestamp in seconds, not milliseconds. ([#4388](https://github.com/triggerdotdev/trigger.dev/pull/4388)) ##### Server changes These changes affect the self-hosted Docker image and Trigger.dev Cloud: - A queue's concurrency limit can now be set as a percentage of your environment limit, from the dashboard or the API. Percentage limits track the environment limit, so raising or lowering it re-divides capacity without you editing every queue. ([#4131](https://github.com/triggerdotdev/trigger.dev/pull/4131)) - See how every queue in an environment is doing: backlog, throughput, concurrency against its limit, when it was throttled, and how long runs waited before starting. Each queue also gets its own page, which breaks the same numbers down per concurrency key so you can tell whether one key is starving the rest. ([#4131](https://github.com/triggerdotdev/trigger.dev/pull/4131)) - The agent detail page now uses the same layout as the other metrics pages: filters stay pinned at the top, the activity charts sit in a row beneath them, and the tabs and table scroll with the page, with the agent config in a resizable panel on the right. ([#4131](https://github.com/triggerdotdev/trigger.dev/pull/4131)) - Self-hosted instances can now serve deployed runs' API traffic from a different origin than the public one, per organization, via the `INTERNAL_API_ORIGIN` environment variable and a feature flag. ([#4366](https://github.com/triggerdotdev/trigger.dev/pull/4366)) - A queue's concurrency keys are now paged and searchable, so a queue with thousands of keys shows _[Truncated at 4000 characters — full notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.9]_ ### v4.5.8 — trigger.dev v4.5.8 - Date: 2026-07-27 - Version: v4.5.8 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.8 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.8 - **changed** — Preserve the partial assistant message when a chat turn's model stream fails mid-response, passing the recovered partial to onTurnComplete and keeping it in chat.createSession before rethrowing - **added** — Favorite any dashboard page to a new Favorites section in the side menu, and customize the sidebar by renaming favorites, hiding items, and reordering items and sections - **changed** — List API endpoints now clamp the page size to a maximum of 100 items - **changed** — Organizations without billing alerts now get default spend alert thresholds, and the billing limit page no longer pre-selects an option and prompts configuration - **changed** — When creating a Personal Access Token, the generated token now shows its first and last few characters instead of being fully hidden - **added** — Add metrics to the realtime backend that measure how often a single changed run is served to multiple subscriptions in one batch - **added** — Realtime run subscriptions can now be configured to read run data straight from the primary database instead of from a lagging replica, off by default - **changed** — SSO and Directory Sync are no longer restricted to Enterprise plans - **changed** — Improved supervisor observability with metrics for outbound requests to make failed calls to upstream services easier to monitor - **changed** — The runs list on a task's page now updates live with status changes and newly triggered runs appearing without manual refresh - **fixed** — Speed up the Batches list page for environments with a large number of batches that could previously time out while loading - **fixed** — Container startup no longer prints database and ClickHouse connection strings with credentials to the logs - **fixed** — The tasks page no longer runs two queries whose results were never displayed, removing wasted work on every page load and a source of hidden server errors ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.8`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1071308577?tag=v4.5.8) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-8 ##### What's changed ##### Improvements - Preserve the partial assistant message when a chat turn's model stream fails mid-response. `chat.agent` now passes the recovered partial to `onTurnComplete`, and `chat.createSession`'s `turn.complete()` keeps it before rethrowing, instead of dropping the streamed-so-far output. ([#4348](https://github.com/triggerdotdev/trigger.dev/pull/4348)) ##### Server changes These changes affect the self-hosted Docker image and Trigger.dev Cloud: - Favorite any dashboard page to a new Favorites section in the side menu, and customize the sidebar by renaming favorites, hiding items, and reordering items and sections. ([#4375](https://github.com/triggerdotdev/trigger.dev/pull/4375)) - List API endpoints now clamp the page size to a maximum of 100. Requests asking for a larger page size return up to 100 items and keep paginating, rather than pulling an unbounded page. ([#4360](https://github.com/triggerdotdev/trigger.dev/pull/4360)) - Organizations without billing alerts now get default spend alert thresholds, so you're notified before usage grows unexpectedly. The billing limit page no longer pre-selects an option before you've set a limit and prompts you to configure one. Alert previews now update immediately after you change your billing limit. ([#4328](https://github.com/triggerdotdev/trigger.dev/pull/4328)) - When you create a Personal Access Token, the generated token now shows its first and last few characters instead of being fully hidden, so you can confirm you copied the right value. ([#4363](https://github.com/triggerdotdev/trigger.dev/pull/4363)) - Add metrics to the realtime backend that measure how often a single changed run is served to multiple subscriptions in one batch. ([#4341](https://github.com/triggerdotdev/trigger.dev/pull/4341)) - Realtime run subscriptions can now be configured to read run data straight from the primary database, so a run's latest state is never served from a lagging replica. Off by default; replica reads are unchanged unless you turn it on. ([#4378](https://github.com/triggerdotdev/trigger.dev/pull/4378)) - SSO and Directory Sync are no longer restricted to Enterprise plans — get in touch and we can turn them on for your organization whatever plan you're on. ([#4393](https://github.com/triggerdotdev/trigger.dev/pull/4393)) - Improved supervisor observability: it now reports metrics for its outbound requests, making failed calls to upstream services easier to monitor. ([#4350](https://github.com/triggerdotdev/trigger.dev/pull/4350)) - The runs list on a task's page now updates live — run statuses change and newly triggered runs appear without a manual refresh, matching the main Runs page. ([#4377](https://github.com/triggerdotdev/trigger.dev/pull/4377)) - Speed up the Batches list page for environments with a large number of batches, which could previously time out while loading. ([#4361](https://github.com/triggerdotdev/trigger.dev/pull/4361)) - Container startup no longer prints database and ClickHouse connection strings (with credentials) to the logs. ([#4346](https://github.com/triggerdotdev/trigger.dev/pull/4346)) - The tasks page no longer runs two queries whose results were never displayed, cutting wasted work on every page load and removing a source of hidden server errors ([#4380](https://github.com/triggerdotdev/trigger.dev/pull/4380)) ##### All packages: v4.5.8 @trigger.dev/build, @trigger.dev/core, @trigger.dev/python, @trigger.dev/react-hooks, @trigger.dev/redis-worker _[Truncated at 4000 characters — full notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.8]_ ### v4.5.7 — trigger.dev v4.5.7 - Date: 2026-07-23 - Version: v4.5.7 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.7 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.7 - **added** — Add node-24 and node-26 as supported runtime options in trigger.config.ts - **deprecated** — experimental-node-24 and experimental-node-26 runtime names are now deprecated aliases that emit a deprecation warning, use node-24 and node-26 instead - **changed** — Avoid logging task run environment variable values at debug level - **changed** — chat.writeTurnComplete() now returns the turn boundary's resume cursors (lastEventId and sessionInEventId) for persistence from the task - **changed** — chat.pipeAndCapture() no longer throws when a stream is stopped or fails, instead returns a PipeAndCaptureResult with message, status, and error fields - **changed** — Suppress a build-time warning in Vite-based projects when the optional @ai-sdk/otel package is not installed - **fixed** — Fix intermittent trigger dev run crashes with missing dev-run-worker.mjs by retrying cleanly when build directory is missing and providing clear messages for superseded worker versions - **changed** — Refresh the side menu with separate organization and account menus, new project switcher, and resizable edge - **changed** — Redesign the account Profile page - **changed** — Allow different organization members to use the same development branch name without sharing or colliding with each other's branch environments - **changed** — Limit account settings email input to 254 characters - **fixed** — Prevent duplicate Staging and Preview environments when account setup requests overlap - **fixed** — Fix the docs link on the empty Prompts page that pointed to a page that no longer exists #### trigger.dev v4.5.7 ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.7`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1058728584?tag=v4.5.7) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-7 ##### What's changed ##### Improvements - Add `node-24` and `node-26` as supported `runtime` options in `trigger.config.ts`. The `experimental-node-24` and `experimental-node-26` names are now deprecated aliases and emit a deprecation warning; switch to `node-24` / `node-26` instead. ([#4337](https://github.com/triggerdotdev/trigger.dev/pull/4337)) ```ts import { defineConfig } from "@trigger.dev/sdk"; export default defineConfig({ runtime: "node-24", project: "", }); ``` - Avoid logging task run environment variable values at debug level ([#4336](https://github.com/triggerdotdev/trigger.dev/pull/4336)) - Custom chat agent loops get two ergonomic wins for owning the turn loop. ([#4304](https://github.com/triggerdotdev/trigger.dev/pull/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. ```ts 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` whose `message` holds any partial output captured before the stop or failure, alongside a typed `status` (`"complete" | "aborted" | "error"`) and, on failure, the `error`. Read the message off the result: ```ts 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. - Suppress a build-time warning that could appear in Vite-based projects when the optional `@ai-sdk/otel` package is not installed. ([#4188](https://github.com/triggerdotdev/trigger.dev/pull/4188)) ##### Bug fixes - Fixes intermittent `trigger dev` run crashes where a run could fail at boot with a cryptic `Cannot find module .../dev-run-worker.mjs` after a rebuild had cleaned up the build directory the run was launched against. Dev runs now retry cleanly instead of hard-crashing when their build directory is missing, the dev watchdog no longer removes the build tree of a still-running session, and a run assigned to a worker version that was superseded by a rebuild now fails fast with a clear message instead of silently hanging until it times out. ([#4276](https://github.com/triggerdotdev/trigger.dev/pull/4276)) ##### Server changes These changes affect the self-hosted Docker image and 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](https://github.com/triggerdotdev/trigger.dev/pull/4066)) - Allow different organization members to use the same development branch name without sharing or colliding with each other's branch environments. ([#4323](https://github.com/triggerdotdev/trigger.dev/pull/4323)) - Limit account settings email input to 254 characters. ([#4330](https://github.com/triggerdotdev/trigger.dev/pull/4330)) - Prevent duplicate Staging and Preview environments when account setup requests overlap ([#4261](https://github.co _[Truncated at 4000 characters — full notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.7]_ ### v4.5.6 — trigger.dev v4.5.6 - Date: 2026-07-21 - Version: v4.5.6 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.6 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.6 - **security** — Self-hosted deployments no longer ship shared default credentials; fresh installs generate their own - **security** — Require explicit browser approval for CLI and MCP login, with resilient polling while approval is pending - **changed** — Deployed task telemetry now reports the deployment identifier in the worker.id attribute instead of an opaque internal value - **security** — Prevent prototype pollution when applying run metadata operations or reconstructing nested telemetry attributes - **added** — Add helpers to mint and verify the deployment-scoped token used to authenticate run controllers to the platform - **added** — Add optional request rate limiting for telemetry ingestion endpoints - **security** — Background-worker deployment lookups are now scoped to the authenticated environment - **security** — Updating a GitHub App installation from the callback flow is now scoped to your own organization - **security** — GitHub App installation session is now single-use, invalidated after completing an installation callback - **security** — Scope schedule and environment-variable writes to the caller's project and environment - **security** — Reject compute snapshot callbacks that do not match the snapshot request that created them - **security** — Require secret-key authentication to initialize the session out stream, matching the append route - **security** — Live run and trace subscriptions now validate their identifiers more strictly and only return data from your own organization - **security** — Window-function names in the query compiler are now validated against the allowlist - **security** — Authenticate run controllers to the platform with a signed, deployment-scoped token - **security** — Verify that worker actions target a run belonging to the caller's environment #### trigger.dev v4.5.6 ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.6`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-6 ##### What's changed ##### Breaking changes - Self-hosted deployments no longer ship shared default credentials; fresh installs generate their own. If yours still uses a previously published default, set a unique value before upgrading, or set `ALLOW_INSECURE_DEFAULT_SECRETS=true` to keep booting while you migrate. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) ##### Security patches - Require explicit browser approval for CLI and MCP login, with resilient polling while approval is pending. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Deployed task telemetry now reports the deployment identifier (e.g. `deployment_abc123`) in the `worker.id` attribute, instead of an opaque internal value. Upgrade to get the readable identifier in your own OpenTelemetry exporters. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Prevent prototype pollution when applying run metadata operations or reconstructing nested telemetry attributes, while preserving legitimate `constructor` and `prototype` fields. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Add helpers to mint and verify the deployment-scoped token used to authenticate run controllers to the platform. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Added optional request rate limiting for telemetry ingestion endpoints. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Background-worker deployment lookups are now scoped to the authenticated environment. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Updating a GitHub App installation from the callback flow is now scoped to your own organization, so an installation ID belonging to another organization can no longer be used to refresh that organization's installation record. The GitHub App installation session is also now single-use, so completing an installation callback invalidates its state and it can no longer be replayed. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Scope schedule and environment-variable writes to the caller's project and environment ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Reject compute snapshot callbacks that do not match the snapshot request that created them. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Require secret-key authentication to initialize the session out (agent→client) stream, matching the append route. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Live run and trace subscriptions now validate their identifiers more strictly and only return data from your own organization. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Window-function names in the query compiler are now validated against the allowlist, matching how other function calls are handled. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Authenticate run controllers to the platform with a signed, deployment-scoped token. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) - Verify that worker actions (starting, completing, and continuing a run, and reading its snapshots) target a run belonging to the caller's environment. ([#4316](https://github.com/triggerdotdev/trigger.dev/pull/4316)) ##### All packages: v4.5.6 @trigger.dev/build, @trigger.dev/core, @trigger.dev/python, @trigger.dev/react-hooks, @trigger.dev/redis-worker, @trigger.dev/rsc, @trigger.dev/schema-to-json, @trigg _[Truncated at 4000 characters — full notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.6]_ ### v4.5.5 — trigger.dev v4.5.5 - Date: 2026-07-20 - Version: v4.5.5 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.5 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.5 - **added** — Add experimental Node.js 24 and 26 task runtimes via runtime option in trigger.config.ts - **added** — Add defaultRegion to the project GET and list API responses - **changed** — Transient internal sync failures are now retried quietly instead of surfacing as errors - **changed** — Optionally route ClickHouse read traffic to a read replica while writes stay on the primary using CLICKHOUSE_READER_URL, RUNS_LIST_CLICKHOUSE_URL, or EVENTS_READER_CLICKHOUSE_URL - **changed** — Speed up idempotency checks on batchTrigger calls that use idempotency keys for large batches - **changed** — The Preview branches usage on the Limits page now counts only preview branches - **removed** — Remove the deprecated realtime stream write endpoint used by retired v3 task clients - **fixed** — Fix batchTrigger requests that set a per-item idempotency key failing with an error instead of creating and deduplicating the runs - **fixed** — Fix pages occasionally loading unstyled or failing to load during a deploy by automatically reloading the dashboard - **fixed** — Avoid opening a redundant database connection pool when the legacy and primary databases are the same server #### trigger.dev v4.5.5 ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.5`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1048241799?tag=v4.5.5) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-5 ##### What's changed ##### Improvements - Add experimental Node.js 24 and 26 task runtimes. Set `runtime` to `experimental-node-24` or `experimental-node-26` in `trigger.config.ts`. ([#4085](https://github.com/triggerdotdev/trigger.dev/pull/4085)) - Add `defaultRegion` to the project GET and list API responses; null when unset. ([#4146](https://github.com/triggerdotdev/trigger.dev/pull/4146)) ##### Server changes These changes affect the self-hosted Docker image and Trigger.dev Cloud: - Transient internal sync failures are now retried quietly instead of surfacing as errors. ([#4270](https://github.com/triggerdotdev/trigger.dev/pull/4270)) - Optionally route ClickHouse read traffic to a read replica while writes stay on the primary. Set `CLICKHOUSE_READER_URL` to move all reads, or target the busiest paths with `RUNS_LIST_CLICKHOUSE_URL` (runs list) and `EVENTS_READER_CLICKHOUSE_URL` (traces, spans, logs). All optional; unset keeps current behavior. ([#4081](https://github.com/triggerdotdev/trigger.dev/pull/4081)) - Remove the deprecated realtime stream write endpoint used by retired v3 task clients. ([#4250](https://github.com/triggerdotdev/trigger.dev/pull/4250)) - Fix batchTrigger requests that set a per-item idempotency key failing with an error instead of creating and deduplicating the runs ([#4271](https://github.com/triggerdotdev/trigger.dev/pull/4271)) - Speed up idempotency checks on `batchTrigger` calls that use idempotency keys. Large batches against a task with a big run history no longer degrade to multi-second lookups. ([#4255](https://github.com/triggerdotdev/trigger.dev/pull/4255)) - The "Preview branches" usage on the Limits page now counts only preview branches. ([#4283](https://github.com/triggerdotdev/trigger.dev/pull/4283)) - Avoid opening a redundant database connection pool when the legacy and primary databases are the same server, preventing connection usage from doubling. ([#4253](https://github.com/triggerdotdev/trigger.dev/pull/4253)) - Fix pages occasionally loading unstyled or failing to load during a deploy. The dashboard now reloads automatically to recover. ([#4282](https://github.com/triggerdotdev/trigger.dev/pull/4282)) ##### All packages: v4.5.5 @trigger.dev/build, @trigger.dev/core, @trigger.dev/python, @trigger.dev/react-hooks, @trigger.dev/redis-worker, @trigger.dev/rsc, @trigger.dev/schema-to-json, @trigger.dev/sdk, trigger.dev ##### Contributors Chris Arderne, @nicktrn, @d-cs, Eric Allam, github-actions[bot], @isshaddad, Katia Bulatova, Matt Aitken **Full changelog**: https://github.com/triggerdotdev/trigger.dev/compare/v4.5.4...v4.5.5 ### v4.5.4 — trigger.dev v4.5.4 - Date: 2026-07-14 - Version: v4.5.4 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.4 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.4 - **removed** — Trigger.dev v3 is no longer supported; v3 triggers, batch triggers, reschedules, and deploys now return a clear upgrade message instead of running - **added** — Mark environment variables synced via the syncEnvVars build extension as secrets by returning { name, value, isSecret: true } from your callback - **removed** — Remove the legacy --mcp and --mcp-port options from the dev command in favor of the dedicated trigger mcp command - **removed** — Remove the unused ResourceMonitor export from @trigger.dev/core/v3/serverOnly - **removed** — Remove the unused @trigger.dev/core/v3/zodNamespace export and the legacy v3 socket message schemas - **fixed** — Fix a chat.agent message-loss race where sending a message right after an action could drop the follow-up's response from the UI until a refresh - **added** — Add EVENT_REPOSITORY_POSTGRES_WRITES_DISABLED env var to skip all PostgreSQL task-event writes for deployments that store task events in ClickHouse - **added** — Add promo credits feature with a /promo signup landing page, redeeming a promo code when a new org selects a plan, and showing remaining credits on the usage page - **changed** — Speed up retrieving a background worker by version by reusing already-loaded data instead of scanning the full task table - **changed** — Clarify login error message when an email address is blocked by WHITELISTED_EMAILS setting - **changed** — Make the native build server the default in project build settings, now opt-out with a disableNativeBuildServer key - **added** — Optionally process high-volume telemetry ingestion in parallel by setting OTEL_TRANSFORM_WORKER_POOL_ENABLED=1 - **added** — Add REALTIME_BACKEND_DEFAULT env var to choose the default realtime backend (electric, native, or shadow) - **changed** — Clarify on the Regions page that a region only affects where runs execute, not where data is stored - **changed** — Improve the reliability of how run data is read and written - **fixed** — Fix stale login errors that reappear on the login page and make later successful attempts look like they failed - **changed** — Show better details on the Errors page with meaningful titles for errors without messages and grouping by error name - **fixed** — Return a clear client error when SSO form submissions use an unsupported content type - **fixed** — Fix Query page error when extracting fields from a run's output with JSON functions ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.4`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1028583537?tag=v4.5.4) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-4 ##### What's changed ##### Breaking changes - Trigger.dev v3 is no longer supported. For self-hosted deployments, 4.5.0 is the last version we officially support for running v3; stay on 4.5.0 or upgrade to v4. v3 triggers, batch triggers, reschedules, and deploys now return a clear upgrade message instead of running. ([#4236](https://github.com/triggerdotdev/trigger.dev/pull/4236)) ##### Improvements - You can now mark environment variables synced via the `syncEnvVars` build extension as secrets. Return `{ name, value, isSecret: true }` from your callback and those variables are stored redacted in the dashboard, just like manually created secret env vars. ([#4203](https://github.com/triggerdotdev/trigger.dev/pull/4203)) - Remove the legacy `--mcp` and `--mcp-port` options from the `dev` command. Run the dedicated `trigger mcp` command to start the Trigger.dev MCP server. ([#4246](https://github.com/triggerdotdev/trigger.dev/pull/4246)) - Removed the unused `ResourceMonitor` export from `@trigger.dev/core/v3/serverOnly`. It was a server-side logging helper with no remaining consumers. ([#4244](https://github.com/triggerdotdev/trigger.dev/pull/4244)) - Removed the unused `@trigger.dev/core/v3/zodNamespace` export and the legacy v3 socket message schemas. These were only used by the now-retired v3 engine and have no v4 consumers. ([#4236](https://github.com/triggerdotdev/trigger.dev/pull/4236)) ##### Bug fixes - Fix a `chat.agent` message-loss race where sending a message right after an action (such as an undo) could drop the follow-up's response from the UI until a refresh. ([#4234](https://github.com/triggerdotdev/trigger.dev/pull/4234)) ##### Server changes These changes affect the self-hosted Docker image and Trigger.dev Cloud: - Added `EVENT_REPOSITORY_POSTGRES_WRITES_DISABLED` to skip all PostgreSQL task-event writes for deployments that store task events in ClickHouse. Leave it off unless `EVENT_REPOSITORY_DEFAULT_STORE` is `clickhouse_v2`, otherwise task events are lost. ([#4242](https://github.com/triggerdotdev/trigger.dev/pull/4242)) - Promo credits: a /promo signup landing page, redeeming a promo code when a new org selects a plan, and showing remaining credits on the usage page. ([#4138](https://github.com/triggerdotdev/trigger.dev/pull/4138)) - Speed up retrieving a background worker by version. The endpoint no longer runs a slow lookup that scanned the full task table for large deployments; it now reuses data it already loads, so the response is the same but returns much faster. ([#4245](https://github.com/triggerdotdev/trigger.dev/pull/4245)) - Clearer login error when an email address is blocked by the WHITELISTED_EMAILS setting: the message now explains the address isn't allowed on this instance instead of the ambiguous "This email is unauthorized". ([#4220](https://github.com/triggerdotdev/trigger.dev/pull/4220)) - Make the native build server the default in project build settings. It's now opt-out, stored as a new `disableNativeBuildServer` key. Also clarifies in the UI that build settings apply to GitHub-triggered and native build server deployments. ([#3980](https://github.com/triggerdotdev/trigger.dev/pull/3980)) - Optionally process high-volume telemetry ingestion in parallel for higher throughput under heavy load by setting `OTEL_TRANSFORM_WORKER_POOL_ENABLED=1`. Off by default. ([#4232](https://github.com/triggerdotdev/trigger.dev/pull/4232)) - Add a `REALTIME_BACKEND_DEFAULT` env var to choose the default realtime backend (`el _[Truncated at 4000 characters — full notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.4]_ ### v4.5.3 — trigger.dev v4.5.3 - Date: 2026-07-10 - Version: v4.5.3 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.3 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.3 - **removed** — Removed support for the end-of-life v3 trigger dev CLI; starting a dev session with an old v3 CLI now returns an upgrade message instead of connecting - **fixed** — Fix TS2742 (inferred type cannot be named) when exporting a chat.agent from a project with declaration emit by declaring ChatTaskWirePayload and ChatInputChunk in the public @trigger.dev/sdk/chat subpath - **changed** — Reduce primary database load on the runs page by serving its empty-state check from ClickHouse instead of Postgres - **fixed** — Fixed submitting your email on the login page reloading back to an empty form instead of showing the magic link confirmation screen ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.3`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1017574761?tag=v4.5.3) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-3 ##### What's changed ##### Breaking changes - Removed support for the end-of-life v3 `trigger dev` CLI. Starting a dev session with an old v3 CLI now returns an upgrade message instead of connecting - upgrade to the v4 CLI to continue using `trigger dev`. ([#4198](https://github.com/triggerdotdev/trigger.dev/pull/4198)) ##### Bug fixes - Fix TS2742 ("inferred type cannot be named") when exporting a `chat.agent` from a project with declaration emit: `ChatTaskWirePayload` and `ChatInputChunk` are now declared in the public `@trigger.dev/sdk/chat` subpath, so inferred agent types emit portable declarations and the wire types are directly importable. ([#4218](https://github.com/triggerdotdev/trigger.dev/pull/4218)) ##### Server changes These changes affect the self-hosted Docker image and Trigger.dev Cloud: - Reduce primary database load on the runs page by serving its empty-state check from ClickHouse instead of Postgres. ([#4202](https://github.com/triggerdotdev/trigger.dev/pull/4202)) - Fixed submitting your email on the login page reloading back to an empty form instead of showing the magic link confirmation screen. ([#4215](https://github.com/triggerdotdev/trigger.dev/pull/4215)) ##### All packages: v4.5.3 @trigger.dev/build, @trigger.dev/core, @trigger.dev/python, @trigger.dev/react-hooks, @trigger.dev/redis-worker, @trigger.dev/rsc, @trigger.dev/schema-to-json, @trigger.dev/sdk, trigger.dev ##### Contributors Eric Allam, Oskar Otwinowski, github-actions[bot], Matt Aitken, James Ritchie, claude[bot], Chris Arderne, @nicktrn **Full changelog**: https://github.com/triggerdotdev/trigger.dev/compare/v4.5.2...v4.5.3 ### v4.5.2 — trigger.dev v4.5.2 - Date: 2026-07-09 - Version: v4.5.2 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.2 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.2 - **security** — Harden account and access-control handling across auth, RBAC, org membership, and impersonation - **security** — Harden URL handling for alert webhooks and platform notifications - **security** — Harden the query and prompt-override APIs and rate-limit the query ai-title endpoint - **security** — Improve redaction of secrets from debug logs - **security** — Tighten environment scoping when replaying a run - **security** — Scope run, batch, and trigger lookups to the caller's tenant - **security** — Honor the MCP server's --dev-only flag - **added** — Bulk actions allow runs to be re-run based on a filter or run IDs via API and in the official SDK, supporting create, list, retrieve, poll and abort operations with targeting to different compute regions - **changed** — Large batch payloads now offload to object storage instead of riding inline in the trigger request, offloading any per-item payload over 128KB before sending - **removed** — Removed internal helpers that were only used by the end-of-life v3 self-hosted compute providers - **added** — Add an onEvent callback to TriggerChatTransport and useTriggerChatTransport that emits typed lifecycle events for sends, stream connects, first chunk, and turn completion - **changed** — The environment and branch selector dropdown will automatically revalidate when opened so that new branches show up - **changed** — Cleaner sign-in flow that requests a magic link right from the login page or continues with SSO - **changed** — Serve PostHog analytics from a same-origin /ph path that reverse-proxies to PostHog Cloud EU - **changed** — Refreshed the SSO & Directory Sync settings page layout and copy - **changed** — Migrated the webapp to Tailwind CSS v4 with a CSS-first @theme and semantic color tokens as CSS variables overridable per theme - **changed** — Replaced raw charcoal-* Tailwind classes with semantic theme tokens across the dashboard - **fixed** — Fix chat turns that throw from an onTurnStart hook leaking their message listener - **fixed** — Fix chat.agent and chat.createSession permanently dropping user messages when several arrived during a single turn - **fixed** — Fix chat continuation runs replaying already-answered messages by advancing the session.in resume cursor - **fixed** — Fix chat.createSession swallowing a message sent shortly after stopping a turn - **fixed** — Fix AI generation cost to use the exact provider-reported cost from OpenRouter/Vercel AI Gateway when present instead of catalog pricing #### trigger.dev v4.5.2 ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.2`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1015243510?tag=v4.5.2) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-2 ##### What's changed ##### Security - Harden account and access-control handling across auth, RBAC, org membership, and impersonation. ([#4199](https://github.com/triggerdotdev/trigger.dev/pull/4199)) - Harden URL handling for alert webhooks and platform notifications. ([#4199](https://github.com/triggerdotdev/trigger.dev/pull/4199)) - Harden the query and prompt-override APIs and rate-limit the query ai-title endpoint. ([#4199](https://github.com/triggerdotdev/trigger.dev/pull/4199)) - Improve redaction of secrets from debug logs. ([#4199](https://github.com/triggerdotdev/trigger.dev/pull/4199)) - Tighten environment scoping when replaying a run. ([#4199](https://github.com/triggerdotdev/trigger.dev/pull/4199)) - Scope run, batch, and trigger lookups to the caller's tenant. ([#4199](https://github.com/triggerdotdev/trigger.dev/pull/4199)) - Honor the MCP server's `--dev-only` flag. ([#4199](https://github.com/triggerdotdev/trigger.dev/pull/4199)) ##### Features - Bulk actions allow runs to be re-run based on a filter or run IDs. Now it's also available via API and in the official SDK. Create, list, retrieve, poll and abort bulk actions. Runs can be targeted to a different compute region, just like in the web UI. (#4105) ##### Improvements - Large batch payloads now offload to object storage instead of riding inline in the trigger request. `batchTrigger` and `batchTriggerAndWait` (and the by-id and by-task variants) offload any per-item payload over 128KB before sending, the same way single `trigger` and `triggerAndWait` already do, so a big batch no longer blows past the API body limit. ([#4165](https://github.com/triggerdotdev/trigger.dev/pull/4165)) - Removed internal helpers that were only used by the end-of-life v3 self-hosted compute providers. ([#4194](https://github.com/triggerdotdev/trigger.dev/pull/4194)) - Add an `onEvent` callback to `TriggerChatTransport` / `useTriggerChatTransport` that emits typed lifecycle events for sends, stream connects, first chunk, and turn completion. Send-success metrics, time-to-first-token, and "sent but never answered" watchdogs become a few lines of client code. ([#4187](https://github.com/triggerdotdev/trigger.dev/pull/4187)) ```ts onEvent: (event) => { if (event.type === "message-sent") metrics.timing("chat.send_ms", event.durationMs); if (event.type === "first-chunk") metrics.timing("chat.ttft_ms", event.sinceSendMs ?? 0); }, ``` - The environment and branch selector dropdown will automatically revalidate when opened so that new branches show up. ([#4171](https://github.com/triggerdotdev/trigger.dev/pull/4171)) - A cleaner sign-in flow: request a magic link right from the login page, or continue with SSO. ([#4182](https://github.com/triggerdotdev/trigger.dev/pull/4182)) - Serve PostHog analytics from a same-origin `/ph` path that reverse-proxies to PostHog Cloud EU, following PostHog's first-party reverse-proxy guidance. ([#4183](https://github.com/triggerdotdev/trigger.dev/pull/4183)) - Refreshed the SSO & Directory Sync settings page layout and copy. ([#4196](https://github.com/triggerdotdev/trigger.dev/pull/4196)) - Migrated the webapp to Tailwind CSS v4 with a CSS-first `@theme`. Semantic color tokens are now CSS variables overridable per theme. Tailwind runs through `@tailwindcss/postcss`; plugins replaced or upgraded to v4-compatible versions. ([#4139](https://github.com/triggerdotdev/trigger.dev/pull/4139)) - Replaced raw charcoal-* Tailwind _[Truncated at 4000 characters — full notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.2]_ ### v4.5.1 — trigger.dev v4.5.1 - Date: 2026-07-06 - Version: v4.5.1 - Original notes: https://github.com/triggerdotdev/trigger.dev/releases/tag/v4.5.1 - Permalink: https://whatsnew.fyi/product/trigger-dev/releases/v4.5.1 - **changed** — Extend the SSO plugin contract with WorkOS Directory Sync (SCIM) support #### trigger.dev v4.5.1 ##### Upgrade ```sh npx trigger.dev@latest update # npm pnpm dlx trigger.dev@latest update # pnpm yarn dlx trigger.dev@latest update # yarn bunx trigger.dev@latest update # bun ``` Self-hosted Docker image: [`ghcr.io/triggerdotdev/trigger.dev:v4.5.1`](https://github.com/triggerdotdev/trigger.dev/pkgs/container/trigger.dev/1005713847?tag=v4.5.1) ##### Release notes Read the full release notes: https://trigger.dev/changelog/v4-5-1 ##### What's changed ##### Improvements - Extend the SSO plugin contract with WorkOS Directory Sync (SCIM) support. ([#4148](https://github.com/triggerdotdev/trigger.dev/pull/4148)) ##### All packages: v4.5.1 @trigger.dev/build, @trigger.dev/core, @trigger.dev/python, @trigger.dev/react-hooks, @trigger.dev/redis-worker, @trigger.dev/rsc, @trigger.dev/schema-to-json, @trigger.dev/sdk, trigger.dev ##### Contributors @d-cs, Chris Arderne, @nicktrn, Oskar Otwinowski, claude[bot], Eric Allam, James Ritchie, Matt Aitken, github-actions[bot], Wes Mason **Full changelog**: https://github.com/triggerdotdev/trigger.dev/compare/v4.5.0...v4.5.1