1 new feature, 5 improvements, 2 bug fixes, and 23 server changes.
Highlights
Task-scoped API keys can now run batch operations
Environment API keys scoped to specific tasks can now trigger batch operations for their permitted tasks. The SDK declares the batch's task set before creation, and @trigger.dev/core/v3/apiKeys exports a helper for constructing the additional-key format. (#4389)
Improvements
- Refreshed package builds for TypeScript 7 compatibility, preserving existing runtime entry points. Projects using
emitDecoratorMetadata()with TypeScript 7 can install the@typescript/typescript6compatibility package alongside it; it's optional and not pulled in by installing the Trigger.dev CLI. (#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)- You can now pick the region a run executes in when triggering a task through the MCP server. (#4439)
- Transient connection errors at run start 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)
debouncenow works correctly when passing an array of items tobatchTriggerorbatchTriggerAndWait, and when triggering fromuseTaskTrigger. Previously the option was accepted by the types but dropped before the request was sent, creating a separate run for every trigger instead of collapsing onto the debounce key. (#4520)
Bug fixes
- Fix a chunk occasionally dropped when a
chat.agentrun 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) - Fix a preloaded
chat.agentrun dropping an in-flight message when it retries after an out-of-memory error. The message being processed when the run hit OOM is now recovered and re-run on retry instead of being skipped. (#4349)
Server changes
These changes are included in the v4.5.10 Docker image and are already live on Trigger.dev Cloud:
- Self-hosted deployments can now create multiple full-access API keys per environment. (#4390)
- Short links like
/_/apikeysnow navigate directly to that page in your current project and environment, without needing the full URL. (#4523) - The dashboard's refreshed dark theme is now the default. You can switch to Light, System, or the original Classic look on the account page, with a contrast slider for the new themes. (#4206)
- Self-hosted Kubernetes deployments can now add tolerations to run pods, allowing runs on tainted nodes. An invalid toleration now stops the supervisor at startup instead of failing every run pod. (#4491)
- Batch triggers no longer fail to start their runs under heavy API load. If a batch still can't be created,
batchTriggerAndWaitfails with an error instead of leaving the parent run waiting forever. (#4397) - Fixed debounce doing nothing when the delay exceeded an hour. Debounced runs now keep being pushed back as long as triggers keep arriving; use
maxDelayto set a ceiling. Debounce settings that could never fire are now rejected rather than silently ignored. (#4521) - Fixed a rare case where a single run or span with unprocessable data would cause other runs and trace events in the same batch to disappear from the runs list, traces, and logs. The rest of the batch is now always preserved. (#4358)
- Team members who join an organization through SSO or directory sync now automatically get a development environment for every project. Existing members missing one are repaired on their next membership sync from the identity provider. (#4426)
- Browser tabs now show the name of the current page, and the run, task, or queue when viewing one, instead of always reading "Trigger.dev". (#4517)
- Triggering a task now does one fewer database write, so runs reach the queue slightly faster. (#4419)
- Creating or updating a schedule, and deploying projects with declarative schedules, is faster in long-lived projects that have accumulated many deploys. (#4518)
- Lower background database load during deployments and dev sessions for projects using declarative schedules. (#4522)
- API rate limits now apply per environment. (#4508)
- Triggering a run with a very large
priorityvalue no longer fails. The value is now capped to the highest supported limit instead of returning an error. (#4512) - Fixed a rare error where an idempotency key or debounce key containing a null character would fail to create the run. The null character is now removed automatically. (#4527)
- Speed up resolving the latest worker version and deployment for an environment, removing an occasional stall when triggering runs in projects with many deployed versions. (#4452)
- Fixed the "Contact us" form in the sidebar sometimes failing to send. (#4445)
- The Queues pages now open on the last hour by default and remember the time period you picked when navigating between queues or reloading. (#4438)
- Fixed the health report endpoint returning an internal error when called through the API. (#4488)
- Triggering a task no longer intermittently fails when a database write briefly stalls. (#4514)
- The four charts at the top of the Queues page now always reflect the whole environment, regardless of which queues are visible or how they're sorted. The scheduling delay chart also leaves a gap where no runs started, instead of dropping to zero. (#4486)
- Honor the configured database connection timeout, reducing spurious connection errors during brief connection spikes. (#4513)
- Reject alert webhook destinations in reserved benchmarking IP ranges. (#4528)
How to upgrade
Update the trigger.dev/* packages to v4.5.10 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.10.




