Inngest Release Notes
58 release notes curated from 29 sources by the Releasebot Team. Last updated: Nov 7, 2026
- Nov 6, 2026
- Date parsed from source:Nov 6, 2026
- First seen by Releasebot:Nov 7, 2026
v1.51.0
Inngest adds bulk pause and resume for up to 500 functions through its API, CLI, and MCP tools, alongside expanded DuckDB lake queries and federated insights. The release also improves driver registration and lake data handling.
Release Notes
#5152 feat(api): bulk pause/resume functions via v2 api, cli & mcp
pause or resume up to 500 functions in one app with POST /v2/apps/{app_id}/functions/pause and POST /v2/apps/{app_id}/functions/resume, the inngest api pause-functions / inngest api resume-functions commands, or the pause_functions / resume_functions mcp tools. each call returns an ordered success or error result per function.
Migration Notes
#5152 feat(api): bulk pause/resume functions via v2 api, cli & mcp
none.
Testing
api, cli, mcp and openapi tests passed, including 500/501-id boundaries and body limits. api docs generated and built.
local docker e2e passed with the pr api and system worker: paused/resumed 500 synced functions and confirmed persisted state. three sample functions ran before/after; paused events were skipped and not replayed, while a control continued running. 501 ids returned 400 without changes.
#5159 feat(duckdb): Skip the raw_runs collapse for flat lakes and use TIMESTAMPTZ in federate
None. (000001_baseline.sql is edited in place)
#5160 feat(duckdb): Stamp lake rows w/ bucket_at and read tables by name
The lake tables gain a bucket_at column, in the baseline migration (edited in place since duckdb isn't persistent yet).
Changelog
π Features
- (drivers) Allow drivers to be registered with schemes at init (#5198)
- (api) Bulk pause/resume functions via v2 api, cli & mcp (#5152)
- (duckdb) Stamp lake rows w/ bucket_at and read tables by name (#5160)
- (duckdb) Stream query relations into DuckDB over quack (#5154)
- (duckdb) Federate reads across the lake and a buffer (#5155)
- (insights) Add raw mode and federated reads (#5156)
- (duckdb) Aggregate federated reads (#5157)
- (duckdb) Push a query's top-n into federated sources (#5158)
- (duckdb) Skip the raw_runs collapse for flat lakes and use TIMESTAMPTZ in federate (#5159)
- Nov 6, 2026
- Date parsed from source:Nov 6, 2026
- First seen by Releasebot:Nov 7, 2026
v1.50.0
Inngest adds feedback submission, bulk run cancellation, event lookup, and sandbox image commands across its API, CLI, and MCP tools. The release also improves dashboard onboarding and function status visibility, while delivering fixes for Connect, queues, and batch processing.
Release Notes
#4637 feat(api): authed feedback api/cli/mcp -> plain
Send product feedback to Inngest support through:
- API:
POST /v2/feedback(also available at/api/v2/feedback). - MCP:
submit_feedback. - CLI:
inngest api --prod submit-feedback --feedback "Your feedback". - Dashboard: the existing feedback widget uses the same pipeline.
Submissions go through Cloud and create plain tickets with the configured feedback label. Each account can submit up to 5 at once, with one submission replenished every 12 minutes. Feedback is capped at 10,000 characters, with a visible counter in the dashboard. The dev server returns Cloud submission guidance with a CLI example.
#5016 style(ui): unify dropdown styling across dashboard and dev server
Standardize dropdown spacing, styling and selection indicators across the dashboard and dev server, including clearer keyboard focus and consistent light/dark themes.
#5041 feat(images): add image subcommands
Adds image subcommands for creating customizable sandbox base images from Dockerfiles.
#5058 feat(api): bulk cancel a function's runs via v2 api, cli & mcp
Bulk cancel a function's runs in a time range, with an optional event filter:
- API:
POST /v2/apps/{app_id}/functions/{function_id}/cancellations - CLI:
inngest api create-cancellation - MCP:
create_cancellation
#5074 fix(connect): avoid blocking replies on unreachable executors
Prevent an unreachable Connect executor from delaying response notifications for other executions on the same gateway.
#5077 feat(dashboard): show when a function is draining
The dashboard now displays when a function is draining, alongside its paused status. The configuration tooltip explains that new runs are skipped while existing runs continue to execute.
#5078 feat(dashboard): simplify Runs AI plugin setup
Cloud Runs AI popovers offer simpler ChatGPT / Codex and Claude connection options, with optional CLI setup.
#5088 fix(queue): wake Redis partitions after confirmed capacity release
Fixed functions with concurrency keys stalling for several seconds despite free capacity and ready work.
#5095 feat(api): v2 list and get events
- API:
GET /v2/events,GET /v2/events/{event_id} - CLI:
inngest api list-events,inngest api get-event <event-id> - MCP:
list_events,get_event
#5100 feat(dev-server-ui): add AI-assisted onboarding
Guide new Dev Server users through setup and their first successful function run.
#5101 fix(connect): release leases for undispatched requests
Fix unnecessary Connect step delays after temporary worker-capacity or connection failures by releasing leases for requests that were never dispatched.
#5102 fix(connect): bound gateway Forward and accept keepalive pings
Connect requests no longer hang for up to 15 minutes when a gateway connection dies silently.
#5103 fix(connect): enable gRPC client keepalive for Connect peers
Faster recovery when a Connect gRPC connection dies silently.
#5115 feat(dashboard): show paused and draining status in function lists
The Functions list and top functions table now show when a function is paused or draining.
Example:
#5125 fix(dashboard): add copyable chart tooltip timestamps
Better timestamps in metrics tooltips.
#5128 fix(pauses): delete from existing blocks regardless of feature flags
Fix pause deletion from existing blocks when block flushing is disabled.
#5129 fix(executor): accept successful pause iterator completion
Fixed successful pause iteration incorrectly returning an error.
#5130 fix(trace): failed step timing after sleep
Fixed a failing
step.run()'s start time being seen as astep.sleep()'s start time if thestep.sleep()preceded it.#5131 fix(queue): preserve singleton ownership and report migration read failures
None. Callers must explicitly use these migration primitives.
#5138 fix(pauses): make block deletion by ID retry-safe
Fix retries of block-backed pause deletion leaving deleted pauses visible after a storage error.
#5143 fix(batch): bound batch payloads across append paths
Reduce oversized event batches without rejecting accepted events.
#5153 refactor(checkpoint): remove step size enforcement option
Checkpoint size-limit enforcement can no longer be disabled.
Migration Notes
#4637 feat(api): authed feedback api/cli/mcp -> plain
Run the atlantis apply on infra #584 to add
PLAIN_API_KEYto the app api's aws secret. Cloud #7875 sets the non-secretPLAIN_FEEDBACK_LABEL_TYPE_IDin the production app-api-env configmaps. Both settings are required; deploy cloud before merging this dashboard change.Testing
Feedback and dev-server go tests; dashboard feedback/auth tests, type check, and lint.
#5058 feat(api): bulk cancel a function's runs via v2 api, cli & mcp
None.
Testing
Focused cancellation, api, cli, executor, batch and dev server tests passed. CI passed apart from codecov.
#5077 feat(dashboard): show when a function is draining
Deploy inngest/monorepo#9324 before deploying this dashboard change.
#5078 feat(dashboard): simplify Runs AI plugin setup
No server or credential changes. Adds chatgpt, chatgpt_codex, and claude client values and the setup_opened action to the Segment event introduced in #5071. Existing claude_code and codex_cli values identify command copies. Production connections are not offered for staging/custom API endpoints.
#5088 fix(queue): wake Redis partitions after confirmed capacity release
Dev server / self-hosted: enabled, no config
Cloud: wire the queue-capacity-release-wake LaunchDarkly flag (default off) in the monorepo after the vendor bump
Rolling deploy safe
#5101 fix(connect): release leases for undispatched requests
No Redis key/value format or wire-protocol changes. Existing abandoned request leases retain their current expiry; new pre-dispatch failures release their leases immediately when cleanup succeeds.
#5102 fix(connect): bound gateway Forward and accept keepalive pings
Must be deployed to every executor and gateway before #5103 (client keepalive) ships.
#5103 fix(connect): enable gRPC client keepalive for Connect peers
Requires #5102 to be live everywhere first.
#5111 fix(duckdb): Bound Insights queries' cancellation, memory and size args
The duckdb subprocess now runs w/
memory_limit=2GiB,threads=min(4, cores/2)andmax_temp_directory_size=4GiB, shared w/ dual-write. Reads and dual-write's writes use separate connection pools, sized byINNGEST_DUCKDB_READ_CONNS(default 8) andINNGEST_DUCKDB_WRITE_CONNS(default 16).#5118 fix(duckdb): Break latest-run-row ties by lifecycle stage
None. (
000002_insights_views.sqlis edited in place, which is fine since duckdb isn't persistent yet)#5127 feat(batch): report debug batch API results per store
Proto change is additive and backwards compatible. BatchManager implementations need the new return types.
π€ Generated with Claude Code
#5131 fix(queue): preserve singleton ownership and report migration read failures
Use two separate Cloud releases, as requested in review:
- Merge this upstream PR, repin #9378 to its merged commit, and deploy #9378. It prepares the existing Enqueue RPC to honor the key only with a preserved job ID and explicit destination shard. SYSOP explicitly refuses cross-backend singleton migration in this first release.
- After verifying every relevant queue-proxy instance is on that release, deploy the separate activation PR (inngest/monorepo#9382). Only then does SYSOP start sending the key.
An old proxy silently ignores unknown fields; deploying both steps together is not safe. Do not roll proxies back to a version without this support while the writer remains enabled. Nothing has been deployed.
#5139 feat(batch): tag batch metrics by store and add per-call metrics
Buffer metrics gain a backend label; queries that match an exact label set may need it added.
π€ Generated with Claude Code
#5140 perf(executor): look up invoke pauses by deterministic ID first
Lookup metrics now use
inngest_invoke_pause_lookup_totalwith lookup and outcome labels, replacinginngest_invoke_pause_lookup_fallback_total. No storage migration.#5153 refactor(checkpoint): remove step size enforcement option
Remove EnforceStepSizeLimits from custom checkpoint option initializers.
Testing
go test ./pkg/execution/checkpoint ./pkg/api/apiv1Changelog
π Features
- (dashboard) Simplify Runs AI plugin setup (#5078)
- (duckdb) Dual-write duckdb POC (#4880)
- (duckdb) Duckdb-backed Insights (#4882)
- (duckdb) Add Insights & Sessions UI pages (#4885)
- (batch) Support account-scoped migration (#5104)
- (dashboard) Show when a function is draining (#5077)
- (dashboard) Show paused and draining status in function lists (#5115)
- (batch) Report debug batch API results per store (#5127)
- (batch) Tag batch metrics by store and add per-call metrics (#5139)
- (api) V2 list and get events (#5095)
- (queue) Add queue_item_start_latency metric, comparable across queue backends (#5151)
- (api) Paginate GQL Sessions queries (#5120)
- (connect) Optimize routing (#5166)
- (queue) EnqueueOpts.CallerLease to lease an item for its enqueuing caller (#5147)
- (dev-server-ui) Add AI-assisted onboarding (#5100)
- (api) Add deploy API proto stubs (#5169)
- (images) Add image subcommands (#5041)
- (api) Authed feedback api/cli/mcp -> plain (#4637)
- (api) Bulk cancel a function's runs via v2 api, cli & mcp (#5058)
π Bug Fixes
- (connect) Avoid blocking replies on unreachable executors (#5074)
- (queue) Wake Redis partitions after confirmed capacity release (#5088)
- (insights) Fix JSONPath index hang and list_aggregate argument forwarding (#5105)
- (connect) Release leases for undispatched requests (#5101)
- (dashboard) Add copyable chart tooltip timestamps (#5125)
- (executor) Accept successful pause iterator completion (#5129)
- (pauses) Delete from existing blocks regardless of feature flags (#5128)
- (queue) Preserve singleton ownership and report migration read failures (#5131)
- (trace) Failed step timing after sleep (#5130)
- (api) Match REST Insights to GQL's info, hints and metrics (#5117)
- (connect) Bound gateway Forward and accept keepalive pings (#5102)
- (connect) Hash function config independent of function order (#5126)
- (duckdb) Break latest-run-row ties by lifecycle stage (#5118)
- (executor) Resume invoke pauses with missing correlation indexes (#5134)
- (connect) Enable gRPC client keepalive for Connect peers (#5103)
- (api) Encode non-finite floats and big ints in Insights results (#5116)
- (pauses) Make block deletion by ID retry-safe (#5138)
- (batch) Bound batch payloads across append paths (#5143)
- (api) Return 400s for bad Sessions time ranges and cursors (#5121)
- (duckdb) Use exported session time-range resolver (#5162)
- (insights) Close transpiler gaps from the DuckDB Insights review (#5109)
- (parser) Make written SQL match the AST (#5110)
- (duckdb) Bound Insights queries' cancellation, memory and size args (#5111)
- (duckdb) Make CEL run/event search match CEL semantics (#5112)
- (registration) Keep inngest://serve app URLs (INF-765) (#5167)
- (batch) Only send delete keys to secondary if absent in primary (#5170)
- (util) Apply De Morgan in NormalizeAppURL to fix lint (INF-765) (#5174)
π Refactor
- (checkpoint) Remove step size enforcement option (#5153)
β‘ Performance
- (duckdb) Filter Sessions by time before collapsing runs (#5119)
- (executor) Look up invoke pauses by deterministic ID first (#5140)
- (expressions) Share lifted CEL execution plans (#4965)
π¨ Styling
- (ui) Unify dropdown styling across dashboard and dev server (#5016)
βοΈ Miscellaneous Tasks
- Add how to revert section to pr template (#5082)
- Run DuckDB tests in the unit test job (#5123)
- (batch) Log primary store name on fallback reads (#5161)
- (deploys) Add new deploy types (#5045)
All of your release notes in one feed
Join Releasebot and get updates from Inngest and hundreds of other software products.
- Oct 28, 2026
- Date parsed from source:Oct 28, 2026
- First seen by Releasebot:Oct 28, 2026
v1.50.0-beta.1
Inngest shares a prerelease built from v1.50.0-beta.1.
Prerelease
This prerelease was built from v1.50.0-beta.1.
Commit: c51031895769cf168aaf39d2bbb50edec490a458
Original source - Oct 23, 2026
- Date parsed from source:Oct 23, 2026
- First seen by Releasebot:Oct 23, 2026
v1.49.0
Inngest adds function replays by time range and status, plus the ability to resume paused functions through the API, CLI, and MCP. The release also improves replay reporting and paging, and closes a request-limit bypass.
Release Notes
- #5010 feat(api): add function replays to v2
replay a function's runs by time range and status through the api, cli or mcp.
api v2: POST /api/v2/apps/{app_id}/functions/{function_id}/replays
cli: inngest api create-replay
mcp: create_replay - #5015 fix(cqrs): include skipped runs and keep precise paging
more accurate run paging. skipped runs available to replay queries. - #5018 fix(dashboard): show replay failures and correct skipped counts
visible replay failures and correct skipped counts. - #5025 fix(api): enforce request limits before parsing
trailing slashes no longer bypass event request limits. - #5054 feat(api): resume a function via v2 api, cli & mcp
resume a paused function through the api, cli or mcp.
api: POST /v2/apps/{app_id}/functions/{function_id}/resume
cli: inngest api resume-function
mcp: resume_function
Migration Notes
- #5010 feat(api): add function replays to v2
no database changes. deploy inngest/monorepo#9220's workers before enabling the cloud endpoint. - #5018 fix(dashboard): show replay failures and correct skipped counts
deploy the graphql change in inngest/monorepo#9220 first. dashboard builds use the live api. roll back the dashboard before removing the new error field. - #5025 fix(api): enforce request limits before parsing
no database changes.
Changelog
π Features
- (api) Resume a function via v2 api, cli & mcp (#5054)
- (api) Add function replays to v2 (#5010)
π Bug Fixes
- (cqrs) Include skipped runs and keep precise paging (#5015)
- (api) Enforce request limits before parsing (#5025)
- (dashboard) Show replay failures and correct skipped counts (#5018)
- Oct 22, 2026
- Date parsed from source:Oct 22, 2026
- First seen by Releasebot:Oct 23, 2026
v1.48.0
Inngest ships improvements to Connect reliability and capacity recovery, preserves step invokes after execution caps, and adds AI-assisted debugging for failed runs. The release also raises gRPC message limits and updates UI dependencies to address an image optimizer security issue.
Release Notes
#5048 fix(connect): raise gRPC receive limits and stop retrying oversized messages
Connect accepts larger execution requests and replies over internal gRPC and no longer retries transport message-size violations.
#5051 fix(executor): preserve step invokes after execution cap
Updated how step.invoke interacts with execution caps in cloud
#5061 feat(dashboard): add failed run AI debugging handoff
Cloud users can copy an exact-run debugging prompt from failed run details and investigate through their AI tool using Inngest Cloud MCP.
#5062 fix(connect): expire renewed worker capacity reservations
Fix Connect workers incorrectly remaining at capacity after renewed requests are abandoned without explicit cleanup.
#5063 fix(connect): resume requests across executor recovery
Fix duplicate Connect execution after executor failure by resuming the original request lease or buffered response, and release worker capacity when the replacement executor receives the result.
#5070 fix(ui): upgrade Next and Sharp for image optimizer security
Update UI Next.js and native image-processing dependencies to address GHSA-2464-fhr4-w9xw.
Migration Notes
#5048 fix(connect): raise gRPC receive limits and stop retrying oversized messages
Deploy the updated gateway and executor receivers together to support messages above 4 MiB in both directions. Mixed-version receivers can still reject larger messages permanently. No schema or SDK migration.
#5062 fix(connect): expire renewed worker capacity reservations
Existing malformed reservation scores are not rewritten by deployment. Active requests receive corrected scores on their next successful renewal; abandoned entries need targeted reconciliation or expiry of the worker's reservation set after heartbeats stop.
#5063 fix(connect): resume requests across executor recovery
Connect wire request IDs return to the stable queue job-ID format; executor dispatch ID generation and HTTP execution are unchanged.
Existing in-flight requests using per-dispatch IDs cannot be discovered under the new stable key, and mixed old/new executors do not share those keys. Coordinate rollout and rollback around drained in-flight Connect work.
Checkpoint generation validation remains unchanged: a resumed SDK invocation carrying a generation that the checkpoint API considers stale can still be rejected. This PR restores Connect transport identity; it does not relax stale-checkpoint fencing.
The reservation-expiry units fix in #5062 remains a separate change.
Changelog
π Features
- (dashboard) Add failed run AI debugging handoff (#5061)
π Bug Fixes
- (connect) Raise gRPC receive limits and stop retrying oversized messages (#5048)
- (executor) Preserve step invokes after execution cap (#5051)
- (connect) Resume requests across executor recovery (#5063)
- (connect) Expire renewed worker capacity reservations (#5062)
- (ui) Upgrade Next and Sharp for image optimizer security (#5070)
Similar to Inngest with recent updates:
- Proton release notes239 release notes Β· Latest Oct 29, 2026
- Figma release notes183 release notes Β· Latest Nov 6, 2026
- Eleven Labs release notes104 release notes Β· Latest Nov 2, 2026
- Cloudflare release notes2425 release notes Β· Latest Nov 6, 2026
- Firecrawl release notes94 release notes Β· Latest Nov 6, 2026
- Smokeball release notes148 release notes Β· Latest Nov 6, 2026
- Oct 21, 2026
- Date parsed from source:Oct 21, 2026
- First seen by Releasebot:Oct 21, 2026
v1.47.0
Inngest ships a broad update with function pausing through the API, CLI, and MCP, sandbox image selection, and richer tracing and metadata. It also improves dashboard guidance and fixes issues across event handling, scheduling, throttling, and run execution.
Release Notes
#4939 fix(api): support camelCase (and snake_case) run include selectors
REST v2 run-list endpoints now accept camelCase and snake_case include selectors. API documentation recommends deferredFrom and output; existing deferred_from and includeOutput requests remain supported.
#4961 fix(exechttp): synchronize HTTP timing during cancellation
Fix a data race in HTTP request timing when requests are canceled.
#4971 fix(expressions): evaluate presence against concrete data
Correct CEL has(...) checks for missing fields and expressions that reference both a parent and a missing descendant.
#4973 fix(event): reject NUL characters in event names
Event names containing NUL characters are now rejected as invalid.
#4981 feat(dashboard): make the Insights link more prominent in runs search
More prominent Insights links on the runs page when CEL search pauses.
#4984 feat(dashboard): prompt sandbox upgrades on unpaid plans
The dev server now explains when Cloud sandboxes require a paid plan and links to the upgrade page.
#4987 fix(api): set Retry-After on extended-trace cap 429s
Extended-trace cap 429s now include Retry-After, so SDKs stop retrying immediately instead of stalling requests.
#4989 feat(api): add sandbox image selection contract
The sandbox API contract supports selecting published images during creation and returning the resolved artifact digest.
#4990 feat(tracing): add custom trace spans and groups
Traces for Sandboxes and @inngest/ci now group related actions accordingly
#4991 feat(tracing): show inngest.warnings more obviously
Warnings in traces are now shown more obviously
#4992 feat(metadata): Accept per-name score & warning kinds
The dev server & self-hosted server now accept inngest.score.<name> and inngest.warning.<code> metadata kinds and show them in run details.
#4993 feat(metadata): Write all metadata as set
Every metadata write now replaces the previous value for its kind on its span instead of merging into it. Scores and warnings are stored under per name inngest.score.<name> / inngest.warning.<code> kinds (older SDKs keep working, the server splits their writes).
#4994 fix(executor): Validate SDK step metadata kinds
Step metadata sent by SDKs is now validated the same way as checkpoint and API metadata, so reserved inngest.* kinds outside the allowlist and invalid score values are dropped instead of stored.
#5001 fix(executor): Always retry failed discovery enqueues
Fixes runs getting stuck as Running when enqueueing the next step fails transiently.
#5002 fix(executor): Finalize runs of permanently failed jobs
Runs whose last attempt hits an internal error now fail w/ InngestErrInternal instead of getting stuck as Running.
#5003 fix(devserver): do not clobber checksum/error on named apps during -u sdk-url startup
Restarting with -u no longer bumps function versions for an app whose id is still derived from its URL when the register request is unchanged.
#5011 fix(api): Handle every event in a batch like Cloud
The event API now ingests the valid events in a batch that contains invalid events, returning "" in ids for each rejected event, matching Inngest Cloud.
#5020 fix: extend scheduling retry protection past delivery backoff
Run scheduling with rate limits retains retry protection for 30 minutes between attempts, allowing retries across ten-minute delivery gaps without consuming the same constraint again.
#5026 fix(queue): enforce throttling per execution attempt
Function throttles now apply to execution retries even when an earlier attempt ran within the last five minutes.
#5027 fix(dashboard): use full-width page scrollers below fixed headers
Fix unnecessary outer scrolling and content shifting beneath dashboard headers. Scrolling from blank page gutters now moves the page content on Billing and AI dashboards, while preserving independent split-pane scrolling.
#5030 fix(executor): preserve singleton runs on scheduling retries
Prevent scheduling retries from canceling an existing singleton run before rejecting the retry as a duplicate.
#5035 feat(api): pause a function via v2 api, cli & mcp
pause a function through the api, cli or mcp.
- api: POST /v2/apps/{app_id}/functions/{function_id}/pause
- cli: inngest api pause-function
- mcp: pause_function
#5037 test(queue): isolate capacity lease expiry test lifecycle
None. Test synchronization and cleanup only.
#5038 fix(state): expose idempotency lookup over the state RPC
None. This adds the shared protocol; cloud needs the companion proxy implementation.
#5060 fix(connect): preserve refreshed connections during cleanup
Connect cleanup no longer removes a worker based on an old health check if its connection has since been refreshed. This prevents avoidable routing failures.
Migration Notes
#4961 fix(exechttp): synchronize HTTP timing during cancellation
No application configuration changes are required.
#4971 fix(expressions): evaluate presence against concrete data
Expressions that relied on an existing parent being reported absent because another path beneath it was missing will now observe the parent's actual presence. Direct negation and non-presence expression behavior are unchanged.
#4972 feat(state): persist a run's scheduled_at in run state
None. The new Redis metadata field and proto field are optional; runs in flight during an upgrade read scheduled_at as unset.
#4976 perf(queue): look up account priorities concurrently in AccountPeek
None
π€ Generated with Claude Code
https://claude.ai/code/session_01ACpv81TPBvGfWpStT4UrQT
#4979 chore(api): soft-deprecate includeOutput
Use include=output instead of includeOutput to request optional output.
#4983 perf(constraintapi): let a capacity-release wake skip the limiting-constraint cache
None
π€ Generated with Claude Code
https://claude.ai/code/session_01ACpv81TPBvGfWpStT4UrQT
#4984 feat(dashboard): prompt sandbox upgrades on unpaid plans
Deploy inngest/monorepo#9120 before this change.
#4989 feat(api): add sandbox image selection contract
Additive optional fields; existing requests and responses remain supported. Requires the companion Cloud API implementation before clients send image. Merge this contract before the dependent monorepo change. No database migration or Simcity node rollout is required for these fields.
#4990 feat(tracing): add custom trace spans and groups
Related
Warnings shown are in #4991
#4991 feat(tracing): show inngest.warnings more obviously
Related
JOB grouping shown is from #4990
#4993 feat(metadata): Write all metadata as set
Userland metadata written to the same kind from separate calls (IE separate HTTP requests from an older SDK) now replaces instead of merging. Stored metadata is untouched and still folds the same way.
#5020 fix: extend scheduling retry protection past delivery backoff
No schema or protocol changes. Cloud must vendor this change and deploy the Constraint API service before it takes effect there. Only scheduling retry markers for requests with a rate limit are retained six times longer. Other callers keep their existing default. The estimate above describes the Redis memory impact. Existing markers are refreshed with the new TTL on an allowed Acquire; already-expired markers are not restored.
Type of change
- Bug fix (non-breaking change that fixes an issue)
Checklist
- I've linked associated incident context.
- I've tested my own changes.
#5026 fix(queue): enforce throttling per execution attempt
No schema or protocol changes. Cloud must vendor this change and deploy it to executors; changing only the Constraint API server does not apply the fix. Old workers can still bypass throttling during a mixed-version rollout. A retry admitted by an old worker may be checked again when a new worker takes over, potentially delaying it until throttle capacity is available. Marker retention remains five minutes, but separate execution attempts now retain separate markers. This does not replay previously affected work.
#5030 fix(executor): preserve singleton runs on scheduling retries
None. This does not restore runs that were already canceled.
#5032 ci(codeql): scan fork pull requests
Merging this file alone does not enable fork scans. After review and merge, switch CodeQL from default to advanced setup, enable this workflow if GitHub disabled it, and run it on main. Confirm all three analysis categories succeed, then trigger a fresh pull-request scan on #5003 with the new workflow included in its merge revision. Normal fork-workflow approval may be required. Keep CodeQL required throughout; only merge #5003 after its scan passes and its other checks are satisfactory.
Default setup remains unchanged by this draft PR. If the new workflow fails after the switch, restore the saved default setup while correcting it. This restores existing main/internal-PR coverage, but fork PRs will remain blocked until the migration succeeds.
#5038 fix(state): expose idempotency lookup over the state RPC
Merge this before the monorepo companion. Deploy proxy servers implementing the RPC before the callers that require it. Older servers return Unimplemented; callers must not interpret that as a missing duplicate record.
Validation- go test -count=1 ./proto/gen/state/v2/... passes.
- golangci-lint run ./proto/gen/state/v2/... reports no issues.
- Protobuf regenerated with the repository's Nix toolchain; git diff --check passes.
#5060 fix(connect): preserve refreshed connections during cleanup
Custom Connect state managers must add DeleteConnectionIfUnchanged. The check for an unchanged connection and its deletion must happen atomically, not as separate operations.
There is no Redis data-format change or worker protocol change. Inngest Cloud needs to update its vendored dependency before deploying this fix. This PR does not deploy it or recover existing stuck runs.
Changelog
π Features
- (state) Persist a run's scheduled_at in run state (#4972)
- (dashboard) Prompt sandbox upgrades on unpaid plans (#4984)
- (dashboard) Make the Insights link more prominent in runs search (#4981)
- (api) Expose generated include selector parsers (#4982)
- (api) Share typed include selectors across run endpoints (#4940)
- (api) Allow naming sandbox snapshots and listing by name (#4985)
- (metadata) Accept per-name score & warning kinds (#4992)
- (metadata) Write all metadata as set (#4993)
- (tracing) Add custom trace spans and groups (#4990)
- (tracing) Show inngest.warnings more obviously (#4991)
- (api) Add sandbox image selection contract (#4989)
- (api) Pause a function via v2 api, cli & mcp (#5035)
π Bug Fixes
- (expressions) Evaluate presence against concrete data (#4971)
- (api) Support camelCase (and snake_case) run include selectors (#4939)
- (event) Reject NUL characters in event names (#4973)
- (api) Set Retry-After on extended-trace cap 429s (#4987)
- (executor) Validate SDK step metadata kinds (#4994)
- (executor) Always retry failed discovery enqueues (#5001)
- (executor) Finalize runs of permanently failed jobs (#5002)
- (api) Handle every event in a batch like Cloud (#5011)
- (queue) Reject singleton conflicts before writing items (#5005)
- Extend scheduling retry protection past delivery backoff (#5020)
- (executor) Preserve singleton runs on scheduling retries (#5030)
- (queue) Enforce throttling per execution attempt (#5026)
- (dashboard) Use full-width page scrollers below fixed headers (#5027)
- (exechttp) Synchronize HTTP timing during cancellation (#4961)
- (state) Expose idempotency lookup over the state RPC (#5038)
- (devserver) Do not clobber checksum/error on named apps during -u sdk-url startup (#5003)
- (httpdriver) Amend dns lookups with misconfigured AAAA (#5055)
π Refactor
- (state) Return ErrIdempotentResponse from v2 SaveStep (#5008)
β‘ Performance
- (queue) Look up account priorities concurrently in AccountPeek (#4976)
- (constraintapi) Let a capacity-release wake skip the limiting-constraint cache (#4983)
π§ͺ Testing
- (batch) Adding batching tests for valkey 9 (#4980)
- (queue) Isolate capacity lease expiry test lifecycle (#5037)
βοΈ Miscellaneous Tasks
- (api) Soft-deprecate includeOutput (#4979)
- (codeql) Scan fork pull requests (#5032)
- (http) Improve no route errors (#5056)
- Oct 6, 2026
- Date parsed from source:Oct 6, 2026
- First seen by Releasebot:Oct 21, 2026
v1.46.0
Inngest releases a broad update with Cloud sandbox secrets, local workflow connections, and fine-grained API keys, alongside queue and tracing improvements, dashboard updates, realtime fixes, and a security patch.
Release Notes
#4864 feat(api): add sandbox secret name arrays
Sandbox creation supports selecting stored secrets with
secrets: ["OPENAI_API_KEY"]and injecting each under that same name.#4876 feat(dashboard): manage sandbox secrets in the sidebar
Manage sandbox secrets from the dashboard, including importing .env files into editable rows.
#4886 feat(dev): connect local workflows to Cloud sandboxes
Experimental Cloud sandboxes from local development using inngest login, without deploying an app or configuring an SDK sandbox token.
#4891 feat(dashboard): add api keys with permissions
Admins can create API keys with fine-grained permissions for the v2 API, CLI, and MCP. Keys can expire or stay valid until revoked. Existing api and signing keys keep working unless an admin disables legacy key access.
#4915 feat(tracing): include custom concurrency keys in spans
Custom concurrency expressions and evaluated values are available in run and execution traces and through the run trace GraphQL API. Values longer than 512 characters are truncated in traces.
#4918 feat(queue): accept bounded direct item hints
Queue processors support optional full-item hints through normal constrained leasing and worker dispatch, including Redis backlog items and existing lookahead. Default behavior is unchanged.
#4931 refactor(api-docs): clean up generation and deployment
API documentation is now regenerated and deployed automatically with stable releases.
#4937 fix(queue): prevent key queue step backlog overcounting
Fixed inflated scheduled-step backlog metrics for functions using key queues with concurrency-constrained backlogs.
#4944 fix(realtime): bound publishing and protect authorization tokens
Realtime streaming now stops publishing when execution is canceled or publishing takes longer than five minutes. Publishing failures do not discard the function's response. Publishing also uses the authentication header expected by the realtime API.
#4948 fix(queue): preserve hint receivers and in-flight leases
Executor fast-path receivers recover after temporary shard lease expiry. Hint deadlines no longer abandon slow successful leases before dispatch, and unexpected lease/dispatch failures include per-item diagnostics. Ordinary queue processing remains the fallback.
#4956 security(ui): bump TanStack Start to 1.168.60 for CVE-2026-102989
Upgraded TanStack Start to patch CVE-2026-102989.
Migration Notes
#4864 feat(api): add sandbox secret name arrays
This is an unshipped feature. Deploy matching API/control-plane and SDK support together, with compatible Simcity nodes. No aliases or name/UUID guessing.
Companion PRs: Storage and management, Launch retrieval, Simcity node, JavaScript SDK.
#4876 feat(dashboard): manage sandbox secrets in the sidebar
Requires the Cloud API's secrets management GraphQL fields and configured secret storage. The UI uses the existing sandbox_api flag and organization-admin permissions.
#4877 feat(queue): support dynamic partition peek limits per shard
Code using the recently added WithPartitionPeekMax(n) option should use WithPartitionPeekMaxGetter(func(context.Context, string) int64 { return n }). Direct reads of QueueOptions.PartitionPeekMax should use PartitionPeekLimit(ctx, shardName). The default remains 300 and the absolute cap remains 1,500.
#4886 feat(dev): connect local workflows to Cloud sandboxes
Requires a compatible JavaScript SDK build and a CLI login scoped to a single existing Cloud environment with sandbox access and a default VPC. Use inngest login --force to select another environment. Sandbox proxy access is local only; use a local port forward for remote development. Sandboxes persist after shutdown; cleanup is explicit.
#4902 chore(dashboard): run Vitest tests and align UI on Node 22
UI development and CI now require Node.js 22. .tool-versions pins Node.js 22.16.0.
#4915 feat(tracing): include custom concurrency keys in spans
Testsgo test -count=1 ./pkg/execution/executor ./pkg/coreapi/graph/loaders ./pkg/coreapi/generated ./pkg/tracing/meta#4918 feat(queue): accept bounded direct item hints
The hook and enqueue observer are opt-in. Scheduling notifications now require ScheduleRequest.FastPath.Enabled; the v2 invoke handler sets it explicitly, with no transport implementation enabled by default. Producer protobuf additions preserve older proxies: a missing optional result skips the hint. New hinted items carry the actual positive backend generation. Buffer admission acknowledges the hint, not execution start. Hint configuration now has only source, pending-buffer size and per-attempt timeout; there is no separate active-work or active-attempt cap.
#4944 fix(realtime): bound publishing and protect authorization tokens
Use HTTPS for publishing endpoints. Plain HTTP remains supported for numeric loopback addresses and the development server's own explicitly configured publishing URL. Publishing no longer follows redirects.
Live streaming ends after five minutes, but this does not cancel the underlying function. The executor can continue reading its response under the existing execution deadline.
September 29: follow-up staging fixesThe expanded staging checks found two additional problems, fixed in ad5e25369cdb:
Slow-starting responses: publishing tokens previously expired after one minute, before a slow HTTP response started streaming. Internal publishing tokens now cover the caller's remaining deadline plus one minute, capped at the maximum function duration plus one minute (currently two hours and one minute). Subscription-token defaults remain one minute. This deliberately lengthens the validity of internal workspace-scoped publishing credentials; it does not broaden their permissions or expose them to subscribers.
Cancellation: canceling execution now closes the underlying SDK HTTP request as well as publishing. Previously, publishing stopped but the SDK response read could continue. Cancellation during a body read returns the caller's cancellation/deadline error.
Regression tests fail against the previous implementation and pass with the fixes. Tests cover cancellation before headers and during the body, with and without publishing; publish-token lifetime, expiry, deadline cap, and unchanged subscription defaults. Focused realtime tests and the complete exechttp package pass with the race detector.
Real staging API retest: a simulated SDK withheld its first response for 65 seconds; the subscriber received the first chunk at 65.179 seconds, then the final chunk, with the complete response preserved. Mid-stream cancellation closed the SDK connection and returned promptly. Invalid authentication still preserved the response. These used the PR client locally against the real staging API, not a deployed executor. The long-running test subscriber had an explicitly extended test-only subscription lifetime.
The five-minute publishing deadline remains unchanged. An unresponsive publisher can still delay delivery of the function response until that deadline; that is a separate latency trade-off, not fixed here.
#4948 fix(queue): preserve hint receivers and in-flight leases
Dependent Cloud update: inngest/monorepo#8929. Merge this OSS fix first, then refresh Cloud to the merged revision before merging and releasing it.
No schema changes or new configuration. AttemptTimeout now bounds read-only receiver eligibility only; normal lease/dispatch uses the processor lifetime. Existing stopped receivers in older processes need replacement by deployment. Feature defaults remain disabled and production was not changed while preparing these fixes.
Changelog
π Features
- (api) Add sandbox secret name arrays (#4864)
- (queue) Support pooled role leases (#4896)
- (queue) Support dynamic partition peek limits per shard (#4877)
- (dashboard) Add REST backed run lists (using backend traces v2) (#4890)
- (dashboard) Manage sandbox secrets in the sidebar (#4876)
- (tracing) Include custom concurrency keys in spans (#4915)
- (api) Add async checkpoint routing hook (#4925)
- (execution) Add SyncLifecycleListeners & supporting logic (#4879)
- (dashboard) Add api keys with permissions (#4891)
- (queue) Accept bounded direct item hints (#4918)
- (dashboard) Link progressive searches to Insights (#4949)
- (dashboard) Link Insights resource IDs (#4951)
- (dev) Connect local workflows to Cloud sandboxes (#4886)
π Bug Fixes
- (api) Preserve run list timestamps (#4887)
- (dashboard) Resolve failed boolean flags to ready on error (#4900)
- (ui) Require registered client feature flags (#4904)
- (dashboard) Fix UI for progressive CEL search status (#4913)
- (queue) Notify shards after capacity release (#4914)
- (jank) Remove code block title scrollbar (#4920)
- (dashboard) Switch function runs from nested route to /v2/runs (#4922)
- (mcp) Document cursor static mcp client config (#4916)
- (queue) Prevent key queue step backlog overcounting (#4937)
- (queue) Guard key queue backlog metric counting against no progress (#4945)
- (queue) Drain archived connect queues (#4950)
- (queue) Preserve hint receivers and in-flight leases (#4948)
- Page crash locally on refresh because of cjs import (#4678)
- (realtime) Bound publishing and protect authorization tokens (#4944)
- (executor) Retry sleep completion saves (#4960)
π Refactor
- (dashboard) Omit unused deferred parent run IDs (#4888)
- (ui) Use shared relative time helper (#4919)
- (api-docs) Clean up generation and deployment (#4931)
β‘ Performance
- (queue) Reduce Redis work during enqueue and dequeue (#4955)
βοΈ Miscellaneous Tasks
- (dashboard) Run Vitest tests and align UI on Node 22 (#4902)
- (ci) Pin GitHub Actions to commit SHAs (#4932)
- (dashboard) Make runs list REST + v2 traces backed only and v2 traces only for every other runs data (#4928)
- (queue) Set Scope.EnvID from Item if Item.Identifier is not available (#4954)
π‘οΈ Security
- (ui) Bump TanStack Start to 1.168.60 for CVE-2026-102989 (#4956)
- Oct 6, 2026
- Date parsed from source:Oct 6, 2026
- First seen by Releasebot:Oct 11, 2026
Bursty Concurrency: spikes run up to 3x your limit
Inngest adds bursty concurrency for Pro and above accounts, letting steps temporarily scale to 3x account limits for up to 60 minutes a month with admin alerts and no extra charge.
We've added bursty concurrency for Pro and above accounts. When steps need more concurrency than your account limit, Inngest raises that limit to 3x for up to 60 minutes a month.
Size
Each burst starts at 3x your account concurrency limit.
Counting
The budget is 60 minutes. Each minute in which steps run above your limit spends one minute, however many steps start.
Refill
The budget resets every month, at a time unique to your account.
Notifications
Admins receive an email at 25%, 50%, 75%, and 100% of the budget.
Billing
Bursts are not charged. Add concurrency on your billing page if you use the full hour.
Function-level concurrency you set overrides a burst, so a function with its own limit does not burst.
Read the blog post Β· Bursty concurrency in the docs
Original source - Oct 6, 2026
- Date parsed from source:Oct 6, 2026
- First seen by Releasebot:Oct 11, 2026
Sandboxes: isolated microVMs from any function
Inngest adds Sandboxes in public beta for Pro and higher TypeScript SDK users, letting functions spin up isolated microVMs, run commands, and tear them down with durable steps and new sandboxMiddleware support.
Sandboxes are now in public beta for Pro and higher accounts on the TypeScript SDK.
step.sandbox starts an isolated microVM from inside a function, in under a second, and runs commands in it. Create, commands, and destroy are durable steps on the run trace.
Add sandboxMiddleware() from inngest/experimental on a client at inngest 4.21.1 or newer:
const sandbox = await step.sandbox.create("create-sandbox", { name: `job-${event.data.jobId}`, vcpu: 1, memoryMb: 1024, }); const result = await sandbox.commands.run("run-tests", "npm test"); await sandbox.destroy("destroy-sandbox");A Sandbox is one of three sizes: 1 vCPU with 1 GB of RAM, 2 with 2 GB, or 4 with 4 GB. CPU is $0.000011 per second and RAM is $0.000003 per GB per second, charged while the Sandbox is running. Each Sandbox has one hour of active runtime, and paused time does not count. Destroy the Sandbox when you are done with it.
Read the Sandboxes docs Β· Quick start Β· Try the Sandbox playground
Original source - Oct 6, 2026
- Date parsed from source:Oct 6, 2026
- First seen by Releasebot:Oct 11, 2026
Scoped access: read or write for MCP, the CLI, and the API
Inngest adds read and write permissions for MCP, the CLI, and API keys, with OAuth-based sign in, scoped access, and tighter control for Cloud MCP, CI, and unattended jobs.
MCP, the CLI, and API keys now support read and write permissions.
For Cloud MCP and the CLI, sign in with OAuth and approve the account, environment access, permissions, and session duration. Read permissions allow inspection. Write permissions allow changes. A call must also be allowed by your account role. OAuth sessions cannot read event keys or signing keys. Run
inngest login --forceto sign in again with different permissions.
API keys are for CI and unattended jobs. Organization admins create them in the dashboard with the same permissions, and can limit a key to one environment. INNGEST_API_KEY overrides a stored OAuth login.
A call without the required permission returns
403or
insufficient_scope.
MCP docs Β· CLI authentication Β· Keys and access
Original source - Sep 17, 2026
- Date parsed from source:Sep 17, 2026
- First seen by Releasebot:Sep 18, 2026
v1.45.1
Inngest fixes queue handling for permanently unroutable items and improves the CLI unauthenticated message.
Migration Notes
#4878 fix(queue): drop permanently unroutable items
Consumers must explicitly configure WithPermanentConstraintErrorHandler to enable dropping; existing behavior is unchanged otherwise.
Changelog
π Bug Fixes
- (cli) Better message when cli is unauthed (#4883)
- (queue) Drop permanently unroutable items (#4878)
- Sep 17, 2026
- Date parsed from source:Sep 17, 2026
- First seen by Releasebot:Sep 18, 2026
v1.45.0
Inngest adds OAuth login for the CLI and MCP clients, expands REST API and run-list filtering with CEL support, and introduces sandbox lifecycle contracts. The release also tightens API validation and includes multiple queue, debounce, and error-handling fixes.
Release Notes
#4780 feat(auth): add cli oauth login
Adds cloud login support to the Inngest CLI. OAuth credentials are stored in the operating systemβs credential store and refreshed automatically.
log in
inngest logincheck the current session
inngest auth statusstart a new login and replace the current session
inngest login --forcerevoke the session and remove local credentials
inngest logout#4781 feat(auth): add mcp oauth support
Inngest Cloud MCP clients can now authenticate via OAuth. Users can now select the account, permissions, environment access, etc. in the Inngest Dashboard.
#4788 fix(debounce): handle removed config during execution
Prevent debounce timeout execution from crashing after debounce configuration is removed from a function.
#4789 fix(api): serialize sandbox bytes written as a number
Sandbox file upload responses now serialize bytesWritten as a number instead of a string.
#4813 fix(api): normalize unknown REST v2 body field errors
REST v2 now returns a clear invalid_request error when a JSON request body contains a field unsupported by the server.
#4816 feat(api): reject unmapped v2 request fields via grpc-gateway fork
API V2 now rejects unknown query parameters and request bodies on endpoints that do not define a body.
#4818 fix(semaphores): improve semaphore iteration, breaking early, etc
improves speed of queue when workers are at their concurrency cap
#4832 fix(cel): Improve certain classes of cel filter errors
CEL run searches now return an explicit error for unsupported fields or operators instead of silently ignoring the filter and returning unfiltered runs.
Blank lines in CEL expressions are now safely ignored.
#4849 fix(queue): close migration requeue routing window
Fixed a queue migration race that could lose a requeue schedule update.
#4855 fix(api): return error when event run status lookup fails
REST API event run lookups now return HTTP 500 when querying run status fails instead of HTTP 200 with an empty response.
#4857 fix(api): REST v1 GET requests should keep their error codes
REST v1 endpoints now preserve non-200 HTTP statuses through the response cache, and only successful HTTP 200 responses are cached.
#4858 feat(api): support CEL queries in REST run lists
REST v2 run-list endpoints now support CEL filtering through the optional query parameter and return additional run metadata.
#4863 fix(debounce): finish source cleanup before execution
Fixed duplicate debounce execution after a crash during queue-shard migration.
#4870 feat(api): define sandbox lifecycle contract
Adds REST V2 API contract definitions for pausing and resuming sandboxes and managing sandbox snapshots.
#4874 feat(api): add include option for deferred parents
runs API can optionally return the deferring parent function slug and name
Migration Notes
#4816 feat(api): reject unmapped v2 request fields via grpc-gateway fork
Clients using API V2 must remove unsupported query parameters and must not send request bodies to endpoints without body mappings. Such requests now return HTTP 400 instead of silently ignoring the unsupported input.
#4844 fix(queue): route requeues to current shard
None
Tests
go test -count=1 -run "TestProducerRequeue" ./pkg/execution/queue#4849 fix(queue): close migration requeue routing window
None
Testing
go test -count=1 -run 'TestProducerRequeue' ./pkg/execution/queue#4858 feat(api): support CEL queries in REST run lists
Run-list clients should use page.cursor for continuation instead of deriving a cursor from returned runs.
Testing
nix develop --command go test -race -count=1 ./pkg/api/v2 ./pkg/devserver nix develop --command go test -count=1 ./pkg/cqrs/manager -run '^TestCQRSGetSpanRuns(CELJoinQualifiesTenantFilters|RejectsUnsupportedCELPredicates)$'#4863 fix(debounce): finish source cleanup before execution
None
Verification
go test ./pkg/execution/debounce -count=1 golangci-lint run ./pkg/execution/debounce/...Refs SYS-1258.
#4870 feat(api): define sandbox lifecycle contract
Cloud must update its OSS dependency and replace the existing manually registered lifecycle and snapshot routes with implementations of these generated methods. Those changes are provided by inngest/monorepo#8702 and inngest/monorepo#8701.
Validation
go test ./proto/gen/api/v2 ./pkg/api/v2Changelog
π Features
(sandbox) Accept snapshot ID when creating sandboxes (#4767)
(traces) Remove preview=false legacy trace path (#4799)
(dashboard) Add hobby execution limit notices (#4819)
(api) Reject unmapped v2 request fields via grpc-gateway fork (#4816)
(api) Support CEL queries in REST run lists (#4858)
(api) Define sandbox lifecycle contract (#4870)
(queue) Configure partition peek limit (#4875)
(api) Add include option for deferred parents (#4874)
(auth) Add cli oauth login (#4780)
(auth) Add mcp oauth support (#4781)
π Bug Fixes
(debounce) Handle removed config during execution (#4788)
(cqrs) Close query rows (#2680)
(queue) Reduce semaphore requeue churn (#4807)
(api) Serialize sandbox bytes written as a number (#4789)
(semaphores) Improve semaphore iteration, breaking early, etc (#4818)
(deps) Remove stale Tencent SDK replacement (#4829)
(cel) Improve certain classes of cel filter errors (#4832)
Preserve newer debounce events during queue item recovery (#4800)
(queue) Route requeues to current shard (#4844)
(ui) Update Next.js past critical advisories (#4847)
(queue) Close migration requeue routing window (#4849)
(api) Normalize unknown REST v2 body field errors (#4813)
(api) Return error when event run status lookup fails (#4855)
(components) NewCodeBlock drag-to-select breaks when a mid-drag resize hits the editor (#4856)
(api) REST v1 GET requests should keep their error codes (#4857)
(debounce) Finish source cleanup before execution (#4863)
(ui) Hide unknown run status filter (#4867)
(api) Return unknown run statuses accurately (#4868)
(dashboard) Remove dead run-level AI treatment (#4871)
(rest) Remove mistakenly added run-level has_ai field (#4872)
π Refactor
(event-cel) Remove unused package (#4792)
(debug) Remove unused/incomplete run debug feature (#4801)
(metadata) Remove span metadata feature flag (#4820)
(cqrs) Remove unused span stack reader (#4825)
(cqrs) Remove legacy trace spans reader (#4826)
Use go 1.26 new expressions (#4845)
(queue) Drop iterator APIs from the queue reader interfaces (#4859)
βοΈ Miscellaneous Tasks
(metrics) Remove unused pkg/usage (#4793)
(api) Add proto permission metadata (#4833)
Original source - Aug 26, 2026
- Date parsed from source:Aug 26, 2026
- First seen by Releasebot:Aug 26, 2026
v1.44.0
Inngest adds a run-level AI usage summary, showing total tokens, cost, and models used, and displays recorded scores directly on timeline bars with hover details. It also fixes key queue capacity lease renewal to prevent overlapping steps.
Release Notes
#4736 feat(scores): show recorded scores on timeline bars
Scores recorded on a step now appear as a badge on that step's bar in the run timeline, with a hover card listing each score and its value.
#4758 feat(ai): add run-level AI usage summary
None (user-facing note on the UI PR).
#4759 feat(ui): show run AI usage summary
Run details now show a run-level AI usage summary (total tokens, cost, models used).
#4766 fix(queue): renew capacity leases before dispatch
Fixed an issue where steps using key queues could overlap despite a concurrency limit of one when a pre-acquired capacity lease expired before its first renewal.
Migration Notes
#4736 feat(scores): show recorded scores on timeline bars
Related
EXE-1832: Scoring with the trace view
Changelog
π Features
- (ai) Add run-level AI usage summary (#4758)
- (ui) Show run AI usage summary (#4759)
- (scores) Show recorded scores on timeline bars (#4736)
π Bug Fixes
- (queue) Renew capacity leases before dispatch (#4766)
- (insights) Fix broken download with invalid dates (#4769)
- (connect) Track reply delivery outcomes (#4774)
π Refactor
- (connect) Remove executor ACK RPC (#4751)
β‘ Performance
- (expressions) Avoid cloning event data per evaluation (#4762)
- (batching) Adding metrics for batching to capture redis memory usage and batch duration (#4763)
βοΈ Miscellaneous Tasks
- Update CODEOWNERS (#4771)
- Remove former owners from CODEOWNERS (#4785)
- Aug 20, 2026
- Date parsed from source:Aug 20, 2026
- First seen by Releasebot:Aug 20, 2026
v1.43.0
Inngest adds app filtering to the Functions table and improves CLI API analytics with a new user agent.
Release Notes
#4199 feat(dashboard): add app filtering to functions table
Users can now filter functions by app in the Functions table, making it easier to find functions belonging to specific apps.
Migration Notes
#4199 feat(dashboard): add app filtering to functions table
https://claude.ai/code/session_017cTjigukMmEfDws6YUsoWc
Changelog
π Features
- (cli) Add cli user agent for api analytics (#4752)
- (dashboard) Add app filtering to functions table (#4199)
π Bug Fixes
- (ci) Add --force-with-lease to the Sync Staging workflow push (#4629)
- Aug 19, 2026
- Date parsed from source:Aug 19, 2026
- First seen by Releasebot:Aug 20, 2026
v1.42.0
Inngest adds new dashboard and dev server experiences for Scores, Experiments, event scheduling, and concurrency visibility, plus a v2 send event endpoint and broader UI and batch reliability fixes.
Release Notes
#4697 feat(improvement): Add-scores-and-experiments-empty-states-to-dev-server
The dev server now includes Scores and Experiments pages (AI section, beta) showing how to get started with step.score() and group.experiment(). Data for these features is displayed in Inngest Cloud after deploying; the dev server pages let you register interest in local support.
#4718 fix(traces): scope span self-join by run_id
Fixed the runs list hanging on large Postgres deployments when deferredFrom/isDeferred was selected. No migration or manual index needed.
#4720 feat: Surface event scheduling in the dashboard
Surface scheduled at in the dashboard's run's page iff the event is scheduled in the future
#4721 refactor(runs): remove legacy tokens from run output header
Removed Model/token values parsed from step.run output in favor of a nudge towards the better AI metadata setup.
#4724 feat(api): add v2 send event endpoint
Added a send event endpoint to the v2 rest api, cli and mcp.
POST /v2/events inngest api --prod send-event \ --name "app/user.created" \ --data '{"userId":"user_123","email":"[email protected]"}' \ --id "user-created-user_123"#4737 fix(traces): hide expand/collapse all when there is nothing to toggle
Expand and contract buttons in the trace viewer are hidden when they will not change what's displayed
#4744 feat(ui): adding a concurrency color in the graph
Changing the Overview and the Functions page to show concurrency limits being reached in UI.
#4749 fix(batch): propagate timeout scheduling errors so source events retry
Fixed an issue where transient scheduling failures could prevent a new batch's timeout job from being enqueued, causing the batch to remain pending past its configured timeout until it reached its batch limit.
Migration Notes
#4697 feat(improvement): Add-scores-and-experiments-empty-states-to-dev-server
π€ Generated with Claude Code
https://claude.ai/code/session_01QgjtSu6eF6j3bc8GWC6buN
#4722 chore(queue): remove system queue migrations
None
Validation
go test -count=1 ./pkg/execution/queue ./pkg/execution/state/redis_state ./pkg/execution/executor ./pkg/execution/deletion ./tests/execution/queue
git diff --check
#4723 feat(queue): let custom scanners declare roles
None
Validation
go test -count=1 ./pkg/execution/queue
#4726 fix(queue): preserve sentinel shard selection errors
None
Checks
go test -count=1 ./pkg/execution/queue
git diff --check
#4753 fix(ui): adding legend for concurrency limit on hover
Changelog
π Features
Add SDK feature observations (#4700)
(connect) Adding support for connect HA (#4714)
(queue) Let custom scanners declare roles (#4723)
(api) Add v2 sandbox contracts (#4716)
Surface event scheduling in the dashboard (#4720)
(ai metadata) More robust AI model cost data (#4728)
(improvement) Add-scores-and-experiments-empty-states-to-dev-server (#4697)
(improvement) Cloud MCP UI (#4729)
(ui-mcp) Re-add MCP setup page (#4740)
(mcp) Restore setup docs with public operations (#4748)
(ui) Adding a concurrency color in the graph (#4744)
(api) Add v2 send event endpoint (#4724)
π Bug Fixes
(traces) Scope span self-join by run_id (#4718)
64 bit linux download link for install.sh script (#4727)
(queue) Preserve sentinel shard selection errors (#4726)
Revert "feat(improvement): Cloud MCP UI (#4729)" (#4739)
(ui-mcp) Revert MCP setup page redesign (#4745)
(redis-state) Tolerate legacy idempotency tombstones (#4747)
(batch) Propagate timeout scheduling errors so source events retry (#4749)
(traces) Hide expand/collapse all when there is nothing to toggle (#4737)
(ui) Adding legend for concurrency limit on hover (#4753)
(queue) Disable constraint checks when key queues are disabled (#4754)
π Refactor
(runs) Remove legacy tokens from run output header (#4721)
(queue) Split queue reader capabilities (#4743)
(connect) Remove the async ACK gateway -> executor (#4215)
π Documentation
(api) Improve v2 app sync and insights docs (#4732)
βοΈ Miscellaneous Tasks
(queue) Remove system queue migrations (#4722)
(batch) Add more context to schedule batch execution (#4742)
(connect) Adding run id to logs (#4698)
Original source
Curated by the Releasebot team
Releasebot is an aggregator of official release notes from hundreds of software vendors and thousands of sources.
Our editorial process involves the manual review and audit of release notes procured with the help of automated systems.