-
chore: release v4.4.4 (#3228)
released this
2026-04-13 12:24:38 +00:00 | 883 commits to main since this releaseSummary
12 new features, 59 improvements, 17 bug fixes.
Highlights
- Add support for setting TTL (time-to-live) defaults at the task level
and globally in trigger.config.ts, with per-trigger overrides still
taking precedence
(#3196) - Large run outputs can use the new API which allows switching object
storage providers.
(#3275)
Improvements
- Add platform notifications support to the CLI. The
trigger devand
trigger logincommands now fetch and display platform notifications
(info, warn, error, success) from the server. Includes discovery-based
filtering to conditionally show notifications based on project file
patterns, color markup rendering for styled terminal output, and a
non-blocking display flow with a spinner fallback for slow fetches. Use
--skip-platform-notificationsflag withtrigger devto disable the
notification check.
(#3254) - Add
get_span_detailsMCP tool for inspecting individual spans within
a run trace.
(#3255) - New
get_span_detailstool returns full span attributes, timing,
events, and AI enrichment (model, tokens, cost, speed) - Span IDs now shown in
get_run_detailstrace output for easy
discovery - New API endpoint
GET /api/v1/runs/:runId/spans/:spanId - New
retrieveSpan()method on the API client get_query_schema— discover available TRQL tables and columnsquery— execute TRQL queries against your datalist_dashboards— list built-in dashboards and their widgetsrun_dashboard_query— execute a single dashboard widget querywhoami— show current profile, user, and API URLlist_profiles— list all configured CLI profilesswitch_profile— switch active profile for the MCP sessionstart_dev_server— starttrigger devin the background and stream
outputstop_dev_server— stop the running dev serverdev_server_status— check dev server status and view recent logsGET /api/v1/query/schema— query table schema discoveryGET /api/v1/query/dashboards— list built-in dashboards--readonlyflag hides write tools (deploy,trigger_task,
cancel_run) so the AI cannot make changesread:queryJWT scope for query endpoint authorizationget_run_detailstrace output is now paginated with cursor support- MCP tool annotations (
readOnlyHint,destructiveHint) for all tools get_query_schemanow requires a table name and returns only one
table's schema (was returning all tables)get_current_workerno longer inlines payload schemas; use new
get_task_schematool instead- Query results formatted as text tables instead of JSON (~50% fewer
tokens) cancel_run,list_deploys,list_preview_branchesformatted as
text instead of raw JSON- Schema and dashboard API responses cached to avoid redundant fetches
- Adapted the CLI API client to propagate the trigger source via http
headers.
(#3241) - Propagate run tags to span attributes so they can be extracted
server-side for LLM cost attribution metadata.
(#3213) - New
get_span_detailstool returns full span attributes, timing,
events, and AI enrichment (model, tokens, cost, speed) - Span IDs now shown in
get_run_detailstrace output for easy
discovery - New API endpoint
GET /api/v1/runs/:runId/spans/:spanId - New
retrieveSpan()method on the API client get_query_schema— discover available TRQL tables and columnsquery— execute TRQL queries against your datalist_dashboards— list built-in dashboards and their widgetsrun_dashboard_query— execute a single dashboard widget querywhoami— show current profile, user, and API URLlist_profiles— list all configured CLI profilesswitch_profile— switch active profile for the MCP sessionstart_dev_server— starttrigger devin the background and stream
outputstop_dev_server— stop the running dev serverdev_server_status— check dev server status and view recent logsGET /api/v1/query/schema— query table schema discoveryGET /api/v1/query/dashboards— list built-in dashboards--readonlyflag hides write tools (deploy,trigger_task,
cancel_run) so the AI cannot make changesread:queryJWT scope for query endpoint authorizationget_run_detailstrace output is now paginated with cursor support- MCP tool annotations (
readOnlyHint,destructiveHint) for all tools get_query_schemanow requires a table name and returns only one
table's schema (was returning all tables)get_current_workerno longer inlines payload schemas; use new
get_task_schematool instead- Query results formatted as text tables instead of JSON (~50% fewer
tokens) cancel_run,list_deploys,list_preview_branchesformatted as
text instead of raw JSON- Schema and dashboard API responses cached to avoid redundant fetches
- Add optional
hasPrivateLinkfield to the dequeue message
organization object for private networking support
(#3264) - Define and manage AI prompts with
prompts.define(). Create typesafe
prompt templates with variables, resolve them at runtime, and manage
versions and overrides from the dashboard without redeploying.
(#3244)
Bug fixes
- Fix dev CLI leaking build directories on rebuild, causing disk space
accumulation. Deprecated workers are now pruned (capped at 2 retained)
when no active runs reference them. The watchdog process also cleans up
.trigger/tmp/when the dev CLI is killed ungracefully (e.g. SIGKILL
from pnpm).
(#3224) - Fix
--loadflag being silently ignored on local/self-hosted builds.
(#3114) - Fixed
search_docstool failing due to renamed upstream Mintlify tool
(SearchTriggerDev→search_trigger_dev) - Fixed
list_deploysfailing when deployments have null
runtime/runtimeVersionfields (#3139) - Fixed
list_preview_branchescrashing due to incorrect response shape
access - Fixed
metricstable column documented asvalueinstead of
metric_valuein query docs - Fixed dev CLI leaking build directories on rebuild — deprecated
workers now clean up their build dirs when their last run completes - Fixed
search_docstool failing due to renamed upstream Mintlify tool
(SearchTriggerDev→search_trigger_dev) - Fixed
list_deploysfailing when deployments have null
runtime/runtimeVersionfields (#3139) - Fixed
list_preview_branchescrashing due to incorrect response shape
access - Fixed
metricstable column documented asvalueinstead of
metric_valuein query docs - Fixed dev CLI leaking build directories on rebuild — deprecated
workers now clean up their build dirs when their last run completes
Server changes
These changes affect the self-hosted Docker image and Trigger.dev Cloud:
-
Add admin UI for viewing and editing feature flags (org-level
overrides and global defaults).
(#3291) -
AI prompt management dashboard and enhanced span inspectors.
Prompt management:
-
Prompts list page with version status, model, override indicators, and
24h usage sparklines -
Prompt detail page with template viewer, variable preview, version
history timeline, and override editor -
Create, edit, and remove overrides to change prompt content or model
without redeploying- Promote any code-deployed version to current
-
Generations tab with infinite scroll, live polling, and inline span
inspector -
Per-prompt metrics: total generations, avg tokens, avg cost, latency,
with version-level breakdownsAI span inspectors:
-
Custom inspectors for
ai.generateText,ai.streamText,
ai.generateObject,ai.streamObjectparent spans -
ai.toolCallinspector showing tool name, call ID, and input
argumentsai.embedinspector showing model, provider, and input text
-
Prompt tab on AI spans linking to prompt version with template and
input variables- Compact timestamp and duration header on all AI span inspectors
AI metrics dashboard:
-
Operations, Providers, and Prompts filters on the AI Metrics dashboard
- Cost by prompt widget
- "AI" section in the sidebar with Prompts and AI Metrics links
Other improvements:
- Resizable panel sizes now persist across page refreshes
-
Fixed
<div>inside<p>DOM nesting warnings in span titles and
chat messages
(#3244) -
Add allowRollbacks query param to the promote deployment API to enable
version downgrades
(#3214) -
Pre-warm compute templates on deploy for orgs with compute access.
Required for projects using a compute region, background-only for
others.
(#3114) -
Add automatic LLM cost calculation for spans with GenAI semantic
conventions. When a span arrives withgen_ai.response.modeland token
usage data, costs are calculated from an in-memory pricing registry
backed by Postgres and dual-written to both span attributes
(trigger.llm.*) and a newllm_metrics_v1ClickHouse table that
captures usage, cost, performance (TTFC, tokens/sec), and behavioral
(finish reason, operation type) metrics.
(#3213) -
Add API endpoint
GET /api/v1/runs/:runId/spans/:spanIdthat returns
detailed span information including properties, events, AI enrichment
(model, tokens, cost), and triggered child runs.
(#3255) -
Multi-provider object storage with protocol-based routing for
zero-downtime migration
(#3275) -
Add IAM role-based auth support for object stores (no access keys
required).
(#3275) -
Add platform notifications to inform users about new features,
changelogs, and platform events directly in the dashboard.
(#3254) -
Add private networking support via AWS PrivateLink. Includes
BillingClient methods for managing private connections, org settings UI
pages for connection management, and supervisor changes to apply
privatelinkpod labels for CiliumNetworkPolicy matching.
(#3264) -
Reduce run start latency by skipping the intermediate queue when
concurrency is available. This optimization is rolled out per-region and
enabled automatically for development environments.
(#3299) -
Extended the search filter on the environment variables page to match
on environment type (production, staging, development, preview) and
branch name, not just variable name and value.
(#3302) -
Set
application_nameon Prisma connections from SERVICE_NAME so DB
load can be attributed by service
(#3348) -
Fix transient R2/object store upload failures during batchTrigger()
item streaming. -
Added p-retry (3 attempts, 500ms–2s exponential backoff) around
uploadPacketToObjectStoreinBatchPayloadProcessor.process()so
transient network errors self-heal server-side rather than aborting the
entire batch stream. -
Removed
x-should-retry: falsefrom the 500 response on the batch
items route so the SDK's existing 5xx retry path can recover if
server-side retries are exhausted. Item deduplication by index makes
full-stream retries safe.
(#3331) -
Concurrency-keyed queues now use a single master queue entry per base
queue instead of one entry per key. Prevents high-CK-count tenants from
consuming the entire parentQueueLimit window and starving other tenants
on the same shard.
(#3219) -
Reduce lock contention when processing large
batchTriggerAndWait
batches. Previously, each batch item acquired a Redis lock on the parent
run to insert aTaskRunWaitpointrow, causing
LockAcquisitionTimeoutErrorwith high concurrency (880 errors/24h in
prod). SinceblockRunWithCreatedBatchalready transitions the parent
toEXECUTING_WITH_WAITPOINTSbefore items are processed, the per-item
lock is unnecessary. The newblockRunWithWaitpointLocklessmethod
performs only the idempotent CTE insert without acquiring the lock.
(#3232) -
Strip
securequery parameter from QUERY_CLICKHOUSE_URL before
passing to ClickHouse client. This was already done for the main and
logs ClickHouse clients but was missing for the query client, causing a
startup crash withError: Unknown URL parameters: secure.
(#3204) -
Fix
OrganizationsPresenter.#getEnvironmentmatching the wrong
development environment on teams with multiple members. All dev
environments share the slug"dev", so the previousfindby slug
alone could return another member's environment. Now filters DEVELOPMENT
environments byorgMember.userIdto ensure the logged-in user's dev
environment is selected.
(#3273)
Raw changeset output
Releases
@trigger.dev/build@4.4.4
Patch Changes
- Updated dependencies:
@trigger.dev/core@4.4.4
trigger.dev@4.4.4
Patch Changes
-
Add platform notifications support to the CLI. The
trigger devand
trigger logincommands now fetch and display platform notifications
(info, warn, error, success) from the server. Includes discovery-based
filtering to conditionally show notifications based on project file
patterns, color markup rendering for styled terminal output, and a
non-blocking display flow with a spinner fallback for slow fetches. Use
--skip-platform-notificationsflag withtrigger devto disable the
notification check.
(#3254) -
Fix dev CLI leaking build directories on rebuild, causing disk space
accumulation. Deprecated workers are now pruned (capped at 2 retained)
when no active runs reference them. The watchdog process also cleans up
.trigger/tmp/when the dev CLI is killed ungracefully (e.g. SIGKILL
from pnpm).
(#3224) -
Fix
--loadflag being silently ignored on local/self-hosted builds.
(#3114) -
Add
get_span_detailsMCP tool for inspecting individual spans within
a run trace.
(#3255) -
New
get_span_detailstool returns full span attributes, timing,
events, and AI enrichment (model, tokens, cost, speed) -
Span IDs now shown in
get_run_detailstrace output for easy
discovery- New API endpoint
GET /api/v1/runs/:runId/spans/:spanId - New
retrieveSpan()method on the API client
- New API endpoint
-
MCP server improvements: new tools, bug fixes, and new flags.
(#3224)New tools:
get_query_schema— discover available TRQL tables and columnsquery— execute TRQL queries against your datalist_dashboards— list built-in dashboards and their widgetsrun_dashboard_query— execute a single dashboard widget querywhoami— show current profile, user, and API URLlist_profiles— list all configured CLI profilesswitch_profile— switch active profile for the MCP session
-
start_dev_server— starttrigger devin the background and stream
outputstop_dev_server— stop the running dev server
-
dev_server_status— check dev server status and view recent logsNew API endpoints:
GET /api/v1/query/schema— query table schema discoveryGET /api/v1/query/dashboards— list built-in dashboards
New features:
-
--readonlyflag hides write tools (deploy,trigger_task,
cancel_run) so the AI cannot make changesread:queryJWT scope for query endpoint authorization
-
get_run_detailstrace output is now paginated with cursor support -
MCP tool annotations (
readOnlyHint,destructiveHint) for all toolsBug fixes:
-
Fixed
search_docstool failing due to renamed upstream Mintlify tool
(SearchTriggerDev→search_trigger_dev) -
Fixed
list_deploysfailing when deployments have null
runtime/runtimeVersionfields (#3139) -
Fixed
list_preview_branchescrashing due to incorrect response shape
access -
Fixed
metricstable column documented asvalueinstead of
metric_valuein query docs -
Fixed dev CLI leaking build directories on rebuild — deprecated
workers now clean up their build dirs when their last run completesContext optimizations:
-
get_query_schemanow requires a table name and returns only one
table's schema (was returning all tables) -
get_current_workerno longer inlines payload schemas; use new
get_task_schematool instead -
Query results formatted as text tables instead of JSON (~50% fewer
tokens) -
cancel_run,list_deploys,list_preview_branchesformatted as
text instead of raw JSON -
Schema and dashboard API responses cached to avoid redundant fetches
-
Add support for setting TTL (time-to-live) defaults at the task level
and globally in trigger.config.ts, with per-trigger overrides still
taking precedence
(#3196) -
Adapted the CLI API client to propagate the trigger source via http
headers.
(#3241) -
Updated dependencies:
@trigger.dev/core@4.4.4@trigger.dev/build@4.4.4@trigger.dev/schema-to-json@4.4.4
@trigger.dev/core@4.4.4
Patch Changes
-
Fix
list_deploysMCP tool failing when deployments have null
runtimeorruntimeVersionfields.
(#3224) -
Propagate run tags to span attributes so they can be extracted
server-side for LLM cost attribution metadata.
(#3213) -
Add
get_span_detailsMCP tool for inspecting individual spans within
a run trace.
(#3255) -
New
get_span_detailstool returns full span attributes, timing,
events, and AI enrichment (model, tokens, cost, speed) -
Span IDs now shown in
get_run_detailstrace output for easy
discovery- New API endpoint
GET /api/v1/runs/:runId/spans/:spanId - New
retrieveSpan()method on the API client
- New API endpoint
-
MCP server improvements: new tools, bug fixes, and new flags.
(#3224)New tools:
get_query_schema— discover available TRQL tables and columnsquery— execute TRQL queries against your datalist_dashboards— list built-in dashboards and their widgetsrun_dashboard_query— execute a single dashboard widget querywhoami— show current profile, user, and API URLlist_profiles— list all configured CLI profilesswitch_profile— switch active profile for the MCP session
-
start_dev_server— starttrigger devin the background and stream
outputstop_dev_server— stop the running dev server
-
dev_server_status— check dev server status and view recent logsNew API endpoints:
GET /api/v1/query/schema— query table schema discoveryGET /api/v1/query/dashboards— list built-in dashboards
New features:
-
--readonlyflag hides write tools (deploy,trigger_task,
cancel_run) so the AI cannot make changesread:queryJWT scope for query endpoint authorization
-
get_run_detailstrace output is now paginated with cursor support -
MCP tool annotations (
readOnlyHint,destructiveHint) for all toolsBug fixes:
-
Fixed
search_docstool failing due to renamed upstream Mintlify tool
(SearchTriggerDev→search_trigger_dev) -
Fixed
list_deploysfailing when deployments have null
runtime/runtimeVersionfields (#3139) -
Fixed
list_preview_branchescrashing due to incorrect response shape
access -
Fixed
metricstable column documented asvalueinstead of
metric_valuein query docs -
Fixed dev CLI leaking build directories on rebuild — deprecated
workers now clean up their build dirs when their last run completesContext optimizations:
-
get_query_schemanow requires a table name and returns only one
table's schema (was returning all tables) -
get_current_workerno longer inlines payload schemas; use new
get_task_schematool instead -
Query results formatted as text tables instead of JSON (~50% fewer
tokens) -
cancel_run,list_deploys,list_preview_branchesformatted as
text instead of raw JSON -
Schema and dashboard API responses cached to avoid redundant fetches
-
Large run outputs can use the new API which allows switching object
storage providers.
(#3275) -
Add optional
hasPrivateLinkfield to the dequeue message
organization object for private networking support
(#3264) -
Add support for setting TTL (time-to-live) defaults at the task level
and globally in trigger.config.ts, with per-trigger overrides still
taking precedence
(#3196) -
Adapted the CLI API client to propagate the trigger source via http
headers.
(#3241)
@trigger.dev/python@4.4.4
Patch Changes
- Updated dependencies:
@trigger.dev/sdk@4.4.4@trigger.dev/core@4.4.4@trigger.dev/build@4.4.4
@trigger.dev/react-hooks@4.4.4
Patch Changes
- Updated dependencies:
@trigger.dev/core@4.4.4
@trigger.dev/redis-worker@4.4.4
Patch Changes
- Adapted the CLI API client to propagate the trigger source via http
headers.
(#3241) - Updated dependencies:
@trigger.dev/core@4.4.4
@trigger.dev/rsc@4.4.4
Patch Changes
- Updated dependencies:
@trigger.dev/core@4.4.4
@trigger.dev/schema-to-json@4.4.4
Patch Changes
- Updated dependencies:
@trigger.dev/core@4.4.4
@trigger.dev/sdk@4.4.4
Patch Changes
- Define and manage AI prompts with
prompts.define(). Create typesafe
prompt templates with variables, resolve them at runtime, and manage
versions and overrides from the dashboard without redeploying.
(#3244) - Add support for setting TTL (time-to-live) defaults at the task level
and globally in trigger.config.ts, with per-trigger overrides still
taking precedence
(#3196) - Adapted the CLI API client to propagate the trigger source via http
headers.
(#3241) - Updated dependencies:
@trigger.dev/core@4.4.4
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>Downloads
- Add support for setting TTL (time-to-live) defaults at the task level