trigger.dev v4.4.4
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.4.4
Read the full release notes: https://trigger.dev/changelog/v4-4-4
trigger dev and trigger login commands 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-notifications flag with trigger dev to disable the notification check. (#3254)get_span_details MCP tool for inspecting individual spans within a run trace. (#3255)get_run_details trace output for easy discoveryGET /api/v1/runs/:runId/spans/:spanIdget_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 — start trigger dev in 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--readonly flag hides write tools (deploy, trigger_task, cancel_run) so the AI cannot make changesread:query JWT scope for query endpoint authorizationget_run_details trace output is now paginated with cursor supportreadOnlyHint, destructiveHint) for all toolsget_query_schema now requires a table name and returns only one table's schema (was returning all tables)get_current_worker no longer inlines payload schemas; use new get_task_schema tool insteadcancel_run, list_deploys, list_preview_branches formatted as text instead of raw JSON--readonly flag hides write tools (deploy, trigger_task, cancel_run) so the AI cannot make changesget_run_details trace output is now paginated with cursor supportreadOnlyHint, destructiveHint) for all toolsget_query_schema now requires a table name and returns only one table's schema (was returning all tables)get_current_worker no longer inlines payload schemas; use new get_task_schema tool insteadcancel_run, list_deploys, list_preview_branches formatted as text instead of raw JSON.trigger/tmp/ when the dev CLI is killed ungracefully (e.g. SIGKILL from pnpm). (#3224)--load flag being silently ignored on local/self-hosted builds. (#3114)search_docs tool failing due to renamed upstream Mintlify tool (SearchTriggerDev → search_trigger_dev)list_deploys failing when deployments have null runtime/runtimeVersion fields (#3139)list_preview_branches crashing due to incorrect response shape accessmetrics table column documented as value instead of metric_value in query docssearch_docs tool failing due to renamed upstream Mintlify tool (SearchTriggerDev → search_trigger_dev)list_deploys failing when deployments have null runtime/runtimeVersion fields (#3139)list_preview_branches crashing due to incorrect response shape accessmetrics table column documented as value instead of metric_value in query docsThese changes affect the self-hosted Docker image and Trigger.dev Cloud:
Other improvements:
Add allowRollbacks query param to the promote deployment API to enable version downgrades (#3214)
Add automatic LLM cost calculation for spans with GenAI semantic conventions. When a span arrives with gen_ai.response.model and 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 new llm_metrics_v1 ClickHouse 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/:spanId that 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 privatelink pod 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_name on 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.
uploadPacketToObjectStore in BatchPayloadProcessor.process() so transient network errors self-heal server-side rather than aborting the entire batch stream.x-should-retry: false from 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 a TaskRunWaitpoint row, causing LockAcquisitionTimeoutError with high concurrency (880 errors/24h in prod). Since blockRunWithCreatedBatch already transitions the parent to EXECUTING_WITH_WAITPOINTS before items are processed, the per-item lock is unnecessary. The new blockRunWithWaitpointLockless method performs only the idempotent CTE insert without acquiring the lock. (#3232)
Strip secure query 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 with Error: Unknown URL parameters: secure. (#3204)
Fix OrganizationsPresenter.#getEnvironment matching the wrong development environment on teams with multiple members. All dev environments share the slug "dev", so the previous find by slug alone could return another member's environment. Now filters DEVELOPMENT environments by orgMember.userId to ensure the logged-in user's dev environment is selected. (#3273)
@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
Eric Allam, Oskar Otwinowski, Matt Aitken, James Ritchie, @nicktrn, Saadi Myftija, @D-K-P, @isshaddad, github-actions[bot], @chengzp, Dinko Osrecki
Full changelog: https://github.com/triggerdotdev/trigger.dev/compare/v4.4.3...v4.4.4
Fetched April 13, 2026