Repository navigation
Releases: triggerdotdev/trigger.dev
Release list
trigger.dev v4.7.3
trigger.dev v4.7.3
Upgrade
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 # bunSelf-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.7.3
Release notes
Read the full release notes: https://trigger.dev/changelog/v4-7-3
What's changed
Breaking changes
- Creating or resuming a session with
POST /api/v1/sessionsnow requires both session-write and task-trigger permissions. Scoped keys and public tokens must grantwrite:sessions(or access to the target session) and permission to trigger its task.
Improvements
-
Update the minimatch dependency to ^10.2.3. (
5236799b7) -
Add
trigger.dev orgs listto show the organizations you belong to, with their slugs and IDs. Use the slug withtrigger.dev projects create --org, including for organizations that don't have any projects yet.trigger.dev projects createnow activates the Free plan for organizations that don't have a plan yet, matchingtrigger.dev init. (68ee6be4b) -
Reports filed with the
submit_feedbackMCP tool now reach the Trigger.dev team. They were being sent, but not somewhere anyone was reading. (4a94982a1) -
Stopping a
chat.agentturn whoserun()returns astreamTextresult no longer sends anerrorchunk with "An unexpected error occurred". The turn ends quietly again and the run stays alive for the next message. (64c3ba13c) -
chat.createStartSessionAction,chat.headStartandchat.startHeadStartnow accepttagsfor the Session itself, so chat sessions can be filtered by tag on the Sessions page.triggerConfig.tagsstill tags the session's runs. (9dbc5f984)await startChatSession({ chatId, clientData, tags: [`org:${org.slug}`, `user:${user.id}`], });
Server changes
These changes affect the self-hosted Docker image and Trigger.dev Cloud:
- Self-hosted instances can block sign-in and sign-up from specific email domains with the new
BLOCKED_EMAIL_DOMAINSsetting. - Run traces now appear almost immediately and load progressively as you watch, and much larger traces are viewable than before.
- The Logs page loads and searches faster, and busy environments no longer fail to load it. Searches that are still too expensive now show a message suggesting a narrower range instead of a generic error.
- Fix a rare case where a run could stay stuck executing after the child run or wait it was waiting on had completed.
- Deployments with an unsupported
runtimenow fail with a 400 that names the supported runtimes, instead of a generic 500 - Preserve the cancellation reason when a run that was executing is finalized, instead of replacing it with the default text.
All packages: v4.7.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
triggerdotdev-the-inspector[bot], Eric Allam, Chris Arderne, Wes Mason, @nicktrn, @Mariefay, github-actions[bot], Oskar Otwinowski, James Ritchie, @isshaddad
Full changelog: v4.7.2...v4.7.3
Helm Chart 4.7.3
Installation
helm upgrade --install trigger \
oci:https://github.com/proxy/ghcr.io/triggerdotdev/charts/trigger \
--version "4.7.3"Changes
See commit history for detailed changes in this release.
trigger.dev v4.7.2
Upgrade
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 # bunSelf-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.7.2
Release notes
Read the full release notes: https://trigger.dev/changelog/v4-7-2
What's changed
Improvements
- Use the current Node.js LTS for deployments whose
runtimeis unset or set to"node". Set a versioned runtime such as"node-24"to keep deployments pinned to that Node.js major. (9ecdf735e) chat.agentnow sends parallel tool results to the model in the order the tools were called, the same order the next turn's history uses. Models that bind their thinking to the exact conversation (Claude Sonnet 5.5, Claude Opus 5.5, Claude Fable 5.1) no longer lose a turn's reasoning, or fail the request on accounts that enforce the check, when its tools finish out of order. (760737258)- Recovering a long unfinished
chat.agentresponse on a continuation run no longer blocks the worker. Rebuilding the response from its streamed chunks now takes time linear in its length and yields to the event loop as it goes, so heartbeats keep firing and the run is not killed mid-replay. Capturing the response at the end of a long turn gets the same speedup. (93c63c685)
Server changes
These changes affect the self-hosted Docker image and Trigger.dev Cloud:
- Fix the "Download payload" and "Download output" buttons for large payloads and outputs, which downloaded an error file instead of the data.
All packages: v4.7.2
@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, Chris Arderne, github-actions[bot], @Mariefay
Full changelog: v4.7.1...v4.7.2
trigger.dev v4.7.1
trigger.dev v4.7.1
Upgrade
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 # bunSelf-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.7.1
Release notes
Read the full release notes: https://trigger.dev/changelog/v4-7-1
What's changed
Improvements
trigger.dev initnow stops with a clear error when the target directory has nopackage.json, instead of installing packages into a parent project. A custom task directory entered during interactiveinit <path>is now written totrigger.config.tsrelative to the project directory. (9499bd2a8)
Server changes
These changes affect the self-hosted Docker image and Trigger.dev Cloud:
- The CLI and MCP authorization page now shows the account and organizations you're granting access to.
All packages: v4.7.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
Chris Arderne, github-actions[bot]
Full changelog: v4.7.0...v4.7.1
Helm Chart 4.7.2
Installation
helm upgrade --install trigger \
oci:https://github.com/proxy/ghcr.io/triggerdotdev/charts/trigger \
--version "4.7.2"Changes
See commit history for detailed changes in this release.
Helm Chart 4.7.1
Installation
helm upgrade --install trigger \
oci:https://github.com/proxy/ghcr.io/triggerdotdev/charts/trigger \
--version "4.7.1"Changes
See commit history for detailed changes in this release.
trigger.dev v4.7.0
trigger.dev v4.7.0
Upgrade
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 # bunSelf-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.7.0
Release notes
Read the full release notes: https://trigger.dev/changelog/v4-7-0
What's changed
Improvements
-
Chat agents can now scope concurrency per session. Pass
concurrencyKey(for example, your chat ID or tenant ID) and trigger-time named limits viatriggerConfig.concurrencywhen starting a chat session, fromchat.createStartSessionAction, theAgentChatclient, or a handover. Keys are never defaulted, so a session without one shares the task's keyless pool. (ea9758117)const start = chat.createStartSessionAction("support-chat", { triggerConfig: { concurrencyKey: user.id }, });
-
Concurrency limits can now be paused and resumed, just like queues:
concurrencyLimits.pause(name)stops every run holding the limit from being dequeued while keeping its configured bounds, andconcurrencyLimits.resume(name)starts them again. (fa94febb6)import { concurrencyLimits } from "@trigger.dev/sdk"; await concurrencyLimits.pause("openai"); await concurrencyLimits.resume("openai");
-
Control a task's concurrency with the new
concurrencyoption, and share limits across tasks with named concurrency limits. An inline shape caps the task itself;concurrencyLimit()declares a limit any task can hold (up to two named limits per task), and a trigger call can switch a run's named limits with its ownconcurrencyoption. (ea9758117)import { concurrencyLimit, task } from "@trigger.dev/sdk"; export const openaiLimit = concurrencyLimit({ name: "openai", total: 25 }); export const generateSummary = task({ id: "generate-summary", concurrency: [{ perKey: 1, total: 5 }, openaiLimit], run: async (payload) => {}, });
perKeycaps eachconcurrencyKeypool andtotalcaps across everything, keys or not. The queue-levelconcurrencyLimitoption keeps working unchanged and is deprecated in favor ofconcurrency. Enforcement happens server-side; servers without support accept the option but do not enforce it yet.Manage limits at runtime with the new
concurrencyLimitsnamespace:list()andretrieve(name)report each limit's bounds plus its liverunningandqueuedcounts,override(name, { perKey, total })changes only the given bounds (overridingtotalto0pauses the limit), andreset(name)restores the declared values.Queue reads (
queues.list()andqueues.retrieve()) now report aversionthat discriminates the shape:V1queues keep today's fields (their ownconcurrencyLimitand its override state), whileV2queues (tasks declared withconcurrency) carry no queue-level concurrency, since their limits are read and overridden throughconcurrencyLimits(a task's inline limit under its derivedtask/<task-id>name). Existing reads keep compiling: aV2queue reportsconcurrencyLimitas null andconcurrencyas undefined. -
Chat streams now report
Stream stalled: no records receivedafter five retries of a connected stream that sends no records. Network failures and browser wakeups retain automatic recovery. Healthy tool calls with no records for about six minutes also reach this silence limit. Watch subscriptions remain unlimited, and caller cancellation still closes cleanly. (#4949) -
Webhook verifier artifacts can now declare the provider's response contract as data: a handshake
respondStatus, the status codes returned for accepted deliveries and rejected signatures, and a GET verification flow (getHandshake) for providers that confirm a callback URL with a challenge. HMAC verifiers can read the timestamp from a body field, which the Linear provider config uses for its replay window, and the dashboard's test-send re-signs a recorded sample as of now so it passes that window. (5f54fb27f) -
Add an optional
onSettledcallback toTriggerChatTransport.sendAction()so callers can confirm that their action's input was processed, independently of whether the response stream closes. (#4956) -
Chat agents now return to a durable wait when a session wake does not deliver a matching message. This prevents resumed runs from staying active until their maximum duration and preserves the configured turn timeout across repeated wakes. (
e6ec2c4e8) -
Deprecate
queues.overrideConcurrencyLimitandqueues.resetConcurrencyLimit. These operate on the legacy model where a queue carried its own concurrency limit; declare concurrency with the taskconcurrencyoption and manage it withconcurrencyLimits.overrideandconcurrencyLimits.resetinstead. (414e5a268) -
Steering messages now remain in context across agent steps and keep their original position in saved conversations, including custom response data written between steps. (
5619acf26) -
Set up a new Trigger.dev account from the CLI. Login can prefill an email address, save the user's full name after authorization, and resume authorization later, while
initcan create the first organization, activate its Free plan, and create the first project before scaffolding the app. (fb3b26d4f) -
Added a
submit_feedbackMCP tool so coding agents can report a confusing tool error, a docs mismatch, or a missing capability without the user having to file it by hand. Turn it off with--skip-telemetryorTRIGGER_TELEMETRY_DISABLED; the tool is hidden while it is off. (9d38ff508) -
Authenticate
trigger promotewith environment API keys supplied throughTRIGGER_ACCESS_TOKEN. Environment API key commands now use the saved profile API URL when no explicit override is provided. (562c9433a) -
Convert Zod 4
z.date()fields to date-time strings in JSON Schema without weakening validation for other unsupported types. This prevents MCP tool discovery from failing when a tool input schema contains a date. (f8babdf9b)
Bug fixes
- Fix stale and empty project environment values in
trigger dev, and support empty values insyncEnvVars(). (f384e8334) - Fixes warm starts silently failing for deployments built with 4.6.0 to 4.6.3 in projects that resolve
zodto a 3.x release. The runner could not parse the run handed to it by the warm-start service and exited, leaving the run waiting until the platform redrove it a few minutes later and started it cold. Redeploy to pick up the fix. (#4972) - Fix a ~6-second delay between a task finishing and its run completing (and a ~31-second delay when cancelling a run) in projects that use zod 4.4 or newer. Run cost and billed usage was not impacted by this issue. (#4980)
- Fix Windows deploys failing at indexing with
Cannot find moduleon a percent-encoded path when the project directory contains spaces or non-ASCII characters. (b32c1d157)
Server changes
These changes affect the self-hosted Docker image and Trigger.dev Cloud:
- One concurrency key with a large backlog no longer holds up runs waiting on other keys on the same queue. (#4367)
- API rate limit usage is now recorded per environment in the
metricstable asapi.rate_limit.allowed,api.rate_limit.denied,api.rate_limit.remaining_minand the limit itself (api.rate_limit.limit.per_secondandapi.rate_limit.limit.burst), so you can chart requests against your limit and 429s over time on the Query page and dashboards. - Archive queues you no longer use from the Concurrency page. Archived queues are hidden from the list and no longer count towards allocated concurrency.
- Automatically archive preview branches after a configurable period without deployments, with protected branch names and a preview of affected branches.
- Download a session’s original saved transcript file from the session inspector.
- Organization Owners and Admins can now choose, in Settings under Support Access, whether Trigger.dev support can open their dashboard directly or only after an Owner or Admin approves a request, with each approval lasting 7 days.
- Allocating extra concurrency to environments now requires billing permissions, the same as purchasing it. Allocation changes are also applied atomically, so simultaneous edits can no longer exceed...
Helm Chart 4.7.0
Installation
helm upgrade --install trigger \
oci:https://github.com/proxy/ghcr.io/triggerdotdev/charts/trigger \
--version "4.7.0"Changes
See commit history for detailed changes in this release.
trigger.dev v4.6.4
trigger.dev v4.6.4
This release fixes a Zod import bug in 4.6.0 through 4.6.3 that could cause warm starts to fail and delay runs by approximately five minutes when using npm with Zod 3 pinned in package.json. Cold starts were unaffected. Affected runs were automatically requeued. No data has been lost.
Upgrade
Redeploy your tasks with the latest CLI:
npx trigger.dev@latest deployIf you pin the CLI version, update it to 4.6.4 or later before redeploying. Existing deployments need a redeploy to receive the fix.
To update your project packages:
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 # bunSelf-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.6.4
Release notes
Read the full release notes: https://trigger.dev/changelog/v4-6-4
All packages: v4.6.4
@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
github-actions[bot], Dan Sutton, Chris Arderne
Full changelog: v4.6.3...v4.6.4
trigger.dev v4.6.3
trigger.dev v4.6.3
Warning
A Zod import bug in versions 4.6.0 through 4.6.3 can cause warm starts to fail and delay runs by approximately five minutes when using npm with Zod 3 pinned in package.json. Cold starts are unaffected by this bug. No data has been lost.
Redeploy with npx trigger.dev@latest deploy, or update your pinned CLI version to 4.6.4 or later and redeploy. Read about the fix.
Upgrade
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 # bunSelf-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.6.3
Release notes
Read the full release notes: https://trigger.dev/changelog/v4-6-3
What's changed
Improvements
-
Show how to override the default cron window in schedule policy warnings. (
630eb75d1) -
Thrown error
causechains are now captured and shown. When a task throws an error that wraps another one, the run's error in the dashboard, the CLI dev output, and failure alerts all carry the chain instead of only the outermost message. (4f36f614b)throw new Error("Could not sync the customer", { cause: originalError });
The chain is flattened outermost first, capped at five causes, and cycle safe. It also rides on the
errorof API and realtime run records as acausesarray, andtriggerAndWaitandtriggerAndSubscriberebuild it as a nativecauseon the error they hand back, soerr.causeworks in your own catch blocks. -
Keep summarized assistant steps and tool results out of future
chat.agent()model context after inner compaction, while preserving the full visible conversation. (fc77bfc9a)
All packages: v4.6.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
Chris Arderne, Wes Mason, Eric Allam, github-actions[bot], @Mariefay, Matt Aitken, @d-cs
Full changelog: v4.6.2...v4.6.3