# Trigger.dev v4.5.9 — trigger.dev v4.5.9 - Product: Trigger.dev (https://whatsnew.fyi/product/trigger-dev) - Vendor: Trigger.dev - 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 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'. --- - **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]_