Skip to content

Releases: triggerdotdev/trigger.dev

trigger.dev v4.6.2

Choose a tag to compare

@github-actions github-actions released this 16 Sep 11:41
6d46534

trigger.dev v4.6.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  # bun

Self-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.6.2

Release notes

Read the full release notes: https://trigger.dev/changelog/v4-6-2

What's changed

Improvements

  • Authorize stored realtime payload and output downloads against their owning run. Large packet hydration continues to work for run-, task-, tag-, and batch-scoped public tokens without permitting arbitrary packet reads. (76031b0a1)
  • Show warm idle time and durable waits separately in chat agent traces. Durable waits now open the waitpoint inspector while waiting and after completion. Message span names are shorter, and repeated session IDs no longer crowd message-wait and default output-stream spans. (0754931cc)
  • chat.agent: the between-turns compaction check now receives the last step's token usage (the context the model actually held) instead of the turn's sum over every tool-calling step, so a single tool-using turn no longer compacts a short conversation. The summed figure is still available as turnUsage on the event. A head-start handover whose pending tool call completes under the same message id now replaces its spliced partial in the model lane directly instead of falling back to a full reconversion. (04c837569)
  • Validate resource IDs when creating scoped public tokens. Explicitly empty IDs are now rejected instead of being interpreted as type-wide permissions. (22f8fb2b5)

Server changes

These changes affect the self-hosted Docker image and Trigger.dev Cloud:

  • The banner that prompts you to set a billing limit now lets you choose to run without one, so you don't have to open your billing limit settings to dismiss it.
  • Org member invites now match emails case-insensitively, so an invite whose email casing differs from the invitee's account email can be accepted. (#3849)
  • Limit public access tokens created through the JWT endpoint to the API key's permissions and a maximum 24-hour lifetime. Rotated environment keys can no longer create tokens during their grace period.
  • Realtime session writers now receive authorization limited to the requested session channel.
  • Prevent public session access tokens from authorizing durable chat snapshot uploads

All packages: v4.6.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

Chris Arderne, github-actions[bot], @isshaddad, Eric Allam, claude[bot], @d-cs

Full changelog: v4.6.1...v4.6.2

Helm Chart 4.6.2

Choose a tag to compare

@github-actions github-actions released this 16 Sep 12:00
6d46534

Installation

helm upgrade --install trigger \
  oci://ghcr.io/triggerdotdev/charts/trigger \
  --version "4.6.2"

Changes

See commit history for detailed changes in this release.

trigger.dev v4.6.1

Choose a tag to compare

@github-actions github-actions released this 15 Sep 15:55
4132259

trigger.dev v4.6.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  # bun

Self-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.6.1

Release notes

Read the full release notes: https://trigger.dev/changelog/v4-6-1

What's changed

Improvements

  • Show schedule policy warnings during development and deployment, and present Free plan schedule limits without internal stack traces. (723fde4a8)
  • New CLI commands: projects create/get/rename, runs list/get/replay/cancel, and env set (5bcd1a9fa)
  • Warn when a deployment uses the deprecated Node.js 21 runtime. Deployment logs now include upgrade guidance, and the account associated with the deployment receives an email notification. (053b0b4c6)

Bug fixes

  • Fix the MCP server failing every tools/list call with "Date cannot be represented in JSON Schema" (6c90639f2)

Server changes

These changes affect the self-hosted Docker image and Trigger.dev Cloud:

  • The assistant in the dashboard now answers with cards: investigation cards for run questions, carrying the run's timeline and links to the run, queue or deployment, alongside charts and tables you can open fullscreen or copy — including queue metrics — and it answers about another project or environment without you switching to it first. The assistant reads run timelines through a dedicated endpoint, so span durations and launch events are consistent on every event store; the public run trace API is unchanged.
  • Warn when Production projects still use Node.js 21 and link directly to update instructions
  • Deployments now show the runtime their worker actually reported, so Bun deployments are no longer labelled Node.js; a deployment with no recorded runtime shows a dash instead of a guess.

All packages: v4.6.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, claude[bot], github-actions[bot], @isshaddad, Eric Allam, Katia Bulatova

Full changelog: v4.6.0...v4.6.1

Helm Chart 4.6.1

Choose a tag to compare

@github-actions github-actions released this 16 Sep 11:47
4132259

Installation

helm upgrade --install trigger \
  oci://ghcr.io/triggerdotdev/charts/trigger \
  --version "4.6.1"

Changes

See commit history for detailed changes in this release.

trigger.dev v4.6.0

Choose a tag to compare

@github-actions github-actions released this 14 Sep 13:21
6172bcd

trigger.dev v4.6.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  # bun

Self-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.6.0

Release notes

Read the full release notes: https://trigger.dev/changelog/v4-6-0

What's changed

Breaking changes

  • Minimum supported Zod version is now 3.25.56 released in June 2025. Trigger.dev now uses Zod 4 by default. Projects using Zod 3.25.56 or later 3.x releases remain supported. (#4039). Zod remains a runtime dependency of packages that execute schemas, so existing and new installations continue to receive it automatically. The matching peer dependency range allows package managers to reuse either a compatible Zod 3 or Zod 4 installation from your project.

  • Reading a session's .in channel (GET /realtime/v1/sessions/{id}/in and /in/records) now requires a secret key. Public tokens, including read:sessions:{id}, get a 403; they can still read .out and append to .in.

Highlights

  • A failed write to a realtime or chat session stream no longer crashes the process running it, and a dropped chat session output write is now logged instead of swallowed. (fb25c0149)

Improvements

  • The playwright build extension now works with Playwright 1.58 and later. 1.58 changed the playwright install --dry-run output, which made deploy image builds fail while downloading the browsers. (#4881)

  • Rename the dev error link to "Ask Trigger about this error" (f999516a0)

  • Automatically archive up to three inactive development branches when creating a branch at the plan limit. Connected and recently active branches remain protected, and the CLI reports which branches were archived. (dd55fdb5b)

  • When the build log stream cannot be opened or disconnects during a build server deploy, the CLI now explains that the deployment itself is unaffected and exits immediately with a non-zero code, since it can no longer confirm the outcome. Previously a disconnect printed the raw stream error and left the process hanging. (#4887)

  • Build logs no longer include docker's registry login output, most notably the credential-storage warning on failed builds. (#4909)

  • Reduce sensitive values in CLI and SDK diagnostics, secure files created by trigger env pull, and remove credentials from collected Git remote metadata. (ff05824c1)

  • chat.agent persists a conversation through a TranscriptStorage: an adapter with load and save that the runtime drives after every turn, failed turn and history-changing action. The platform snapshot stays the default; bring your own to write the conversation to your database as it happens. Each save carries both the changes since the last one (so a row store writes only what changed, and an undo is one truncateAfter) and the whole transcript as it now stands (so a document store writes it as-is with no state of its own). (#4896)

    chat.agent({
    id: "my-chat",
    storage: myTranscriptStorage,
    run: async ({ messages, signal, streamText }) =>
      streamText({ model, messages, abortSignal: signal }),
    });

    chat.createLoadTranscriptAction(storage) and useLoadTranscript read the conversation back the same way for every storage, and runTranscriptStorageTests from @trigger.dev/sdk/ai/test checks an implementation against the contract.

    Compaction summaries and chat.inject context now survive a continuation run, and crash recovery runs for every agent, including one that owns its own context. hydrateMessages is deprecated in favour of loadContext on a storage. The snapshot format is now version 2, which older SDK versions cannot read.

  • chat.agent: a run that recovers a session with more than one in-flight user message no longer drops the unanswered ones if it restarts mid-recovery. Recovered messages now hold the resume cursor until each has been answered, so a restart re-answers the rest instead of resuming past them. Previously the cursor could advance past messages that were only held in memory, so a crash before they were dispatched lost them. (#4907)

  • End a chat conversation from inside the agent with chat.close({ reason }). The session row is closed, further sends are refused with HTTP 409, and the run exits without scheduling a continuation, so a budget cap, a completed goal, or a signed-out user can stop the conversation rather than only the current run. (0a23814a0)

    chat.agent({
    id: "budgeted-agent",
    run: async ({ messages, signal }) =>
      streamText({ model: openai("gpt-4o"), messages, abortSignal: signal }),
    onBeforeTurnComplete: async ({ chatId }) => {
      if (await overBudget(chatId)) {
        chat.close({ reason: "Monthly budget reached" });
      }
    },
    });

    The current turn still streams in full. Decide the close before the turn ends (run(), prepareStep, onBeforeTurnComplete) so the closed state rides out on that turn's final record and the user sees it as soon as the answer finishes. TriggerChatTransport picks the close up from the response stream or from a refused send, exposes it as transport.sessionStatus(chatId) plus transport.sessionClosedReason(chatId), and stops sending and reconnecting. Closing a session from outside with sessions.close() now also reaches a live run, so an idle or suspended agent exits on its next wake instead of waiting out its idle timeout. Writes to a closed session's named side channels are refused with the same 409.

  • Reading a page of a chat agent's conversation no longer downloads the whole conversation. The saved transcript now carries an index, so asking for the most recent messages fetches only those messages, and history loads in roughly constant time however long the chat gets. (b7e86f2af)

    A paged read also returns only the conversation itself. The model-side context an agent keeps, its compacted history and any injected context, is no longer included, so it cannot reach a browser through a load-transcript server action.

    The built-in storage is deliberately basic about long conversations: once an agent has compacted, it keeps roughly the last hundred messages and drops the rest, so what it rewrites each turn stops growing. A conversation that never compacts is kept whole. If your app renders history further back than that, give the agent your own transcript storage.

    The saved format has changed and an older SDK cannot read it, so a deployment rolled back to an earlier version will not find a readable transcript for conversations the newer version already saved, and those conversations continue from the live stream tail instead. Roll forward rather than back, or keep your own transcript storage.

  • Adds the GetDeploymentArtifactUrlResponseBody schema for the deployment artifact download URL endpoint. (1a5ad1e5f)

  • Deployments now return the --external-id they were deployed under as externalId, and a run can read its own from ctx.deployment.externalId. Also fixes the deployments list failing when one deployment had no git metadata. (879e8975b)

  • Add an optional appliedSchedulePolicy field to the schedule API response. It is present only when a non-overridable plan policy applies a minimum window to a schedule (e.g. a free-plan schedule's minimum run interval); the configured window continues to be returned separately and unchanged. (2991bb48a)

  • Triggering a task whose id cannot be represented in a URL (for example an id containing an unpaired surrogate) now fails with a clear error naming the task id, instead of a cryptic URI error. (ad821eaea)

  • Actions can now become turns. onAction edits history with chat.history; to answer after the edit, return chat.turn() and a turn runs on the edited history with everything a turn has: the agent's system prompt and tools, steering, compaction, injected instructions, onTurnStart and onTurnComplete, and persistence. A regenerate is chat.history.slice(0, -1); return chat.turn();. (#4816)

    onAction: async ({ action }) => {
    if (action.type === "regenerate") {
      chat.history.slice(0, -1);
      return chat.turn();
    }
    if (action.type === "undo") chat.history.slice(0, -2); // edit only
    },

    Returning a StreamTextResult, string or UIMessage from onAction is no longer supported and now fails with an error pointing to ...

Read more

Helm Chart 4.6.0

Choose a tag to compare

@github-actions github-actions released this 16 Sep 11:47
6172bcd

Installation

helm upgrade --install trigger \
  oci://ghcr.io/triggerdotdev/charts/trigger \
  --version "4.6.0"

Changes

See commit history for detailed changes in this release.

trigger.dev v4.5.16

Choose a tag to compare

@github-actions github-actions released this 02 Sep 17:47

trigger.dev v4.5.16

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  # bun

Self-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.5.16

Release notes

Read the full release notes: https://trigger.dev/changelog/v4-5-16

What's changed

Improvements

  • The trigger.dev deploy and trigger.dev dev commands now warn (with the suggested fix) when your code loads a package through createRequire() that won't be available in the deployed image. Previously it would fail at runtime in production to load the package. Deploys also now show bundler warnings for your code instead of discarding them. (#4851)

Bug fixes

  • Fixes an issue introduced in 4.5.11 that made deploy image builds of projects with large dependency trees noticeably slower. (#4878)

Server changes

These changes affect the self-hosted Docker image and Trigger.dev Cloud:

  • A durable guard improves reliability for runs waiting on triggerAndWait or batchTriggerAndWait if there's a database error that interrupts a child run finishing. (#4849)

All packages: v4.5.16

@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, @d-cs, Matt Aitken, Saadi Myftija, github-actions[bot], James Ritchie

Full changelog: v4.5.15...v4.5.16

Helm Chart 4.5.16

Choose a tag to compare

@github-actions github-actions released this 16 Sep 11:48
cc0049c

Installation

helm upgrade --install trigger \
  oci://ghcr.io/triggerdotdev/charts/trigger \
  --version "4.5.16"

Changes

See commit history for detailed changes in this release.

trigger.dev v4.5.15

Choose a tag to compare

@github-actions github-actions released this 31 Aug 13:06
52848d8

trigger.dev v4.5.15

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  # bun

Self-hosted Docker image: ghcr.io/triggerdotdev/trigger.dev:v4.5.15

Release notes

Read the full release notes: https://trigger.dev/changelog/v4-5-15

What's changed

Improvements

  • Stop shipping compiled test files in the published packages. The *.test.ts sources were being emitted into dist, adding dead weight to every install and leaving modules that require("vitest") (not a dependency) inside the tarball, which tripped tooling that walks every file in a package. (#4833)

  • Named side channels on a Session: durable, two-way realtime streams that outlive a single run and are shared across runs. Open a channel with sessions.open(id).channel(name) (or chat.channel(name) inside a chat.agent) to get an .in/.out pair addressed by name rather than the reserved default pair. Writing a side channel's .in does not wake or trigger a run, so a channel can carry out-of-band data (a stream of frames, a control signal) that many clients read while the agent produces it. (#4815)

    // Inside a chat.agent: stream frames on a named channel, wakes nothing
    const frames = chat.channel("screenshots");
    await frames.out.append(frame);
    frames.in.on((control) => {
    /* client control, no suspend */
    });

    Declare channel record types once with sessions.defineChannel(...) and infer them on both the producer and the consumer, including useSessionStreamChannel in React. Channels get a default retention that keeps them bounded, overridable per channel.

  • Session triggerConfig.tags now accepts up to 10 tags, matching the run tag limit. Previously it was capped at 5, which for chat.agent left room for only 4 of your own tags after the automatic chat:{chatId} tag. (#4832)

All packages: v4.5.15

@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

Matt Aitken, github-actions[bot], Saadi Myftija, claude[bot], Eric Allam, James Ritchie

Full changelog: v4.5.14...v4.5.15

Helm Chart 4.5.15

Choose a tag to compare

@github-actions github-actions released this 01 Sep 13:46
52848d8

Installation

helm upgrade --install trigger \
  oci://ghcr.io/triggerdotdev/charts/trigger \
  --version "4.5.15"

Changes

See commit history for detailed changes in this release.