1.0.0-beta.51
Breaking changes
- refactor(engine): Make Action Gateway mandatory (#3075)
Security
- docs(audit): Add audit log documentation (#3036)
- feat(audit): Expand audit log coverage (#3082)
- fix(audit): Ensure valid payloads and resource attribution (#3143)
- fix(api): Scope workflow execution definitions (#2952)
- fix(mcp): Unblock OpenCode OAuth + clearer org-resolution errors (#2990)
- build(deps): Bump patched security dependencies (#3054)
- fix(agents): Constrain nested action execution (#3072)
- build(deps): Patch deps (#3085)
- fix(mcp): Drop force flag from sync_custom_registry tool (#3138)
- fix(engine): Terminate action process groups (#3159)
- build(deps): Patch dependabot alerts (#3192)
- feat(integrations): Add GitHub REST YAML template catalog (#3193)
- feat(integrations): Add GitLab REST YAML template catalog (#3194)
- feat(integrations): Add MISP security integration (#3198)
- fix(api): Mark session cookie Secure when public API uses HTTPS (#3201)
Case management
- feat(ui): Agent mention autocomplete in case comment composer (#3211)
- feat(cases): Parse and persist case comment mentions (#3213)
- fix(cases): Async case duration sync (#2781)
- fix(ui): Cap bulk case action request concurrency (#3091)
- perf(ui): Defer case linked-row hydration to tables tab (#3093)
- feat(cases): Add batch case update and delete endpoints (#3097)
- perf(cases): Avoid unused relationship loads in case metrics (#3157)
- perf(cases): Defer case number allocation (#3171)
- feat(cases): Add include_payload param to cases search (#2926)
- feat(cases): Paste images inline in case description and comments (#2962)
- feat(cases): Add payload copy button (#3090)
- feat(cases): Add team scoped agent session reads (#3204)
- fix(cases): Render Mermaid diagrams in case descriptions (#2934)
- fix(cases): Serialize attachment quota checks per case (#3019)
- fix(ui): Improve linked rows empty state (#3096)
Tables
Agents
- feat(integrations): Support optional oauth_resource override for mcp (#3081)
- fix(integrations): Support mcp resource content blocks (#3105)
- perf(agents): Move first-prompt auto-title off the request path (#3062)
- perf(agents): Prioritize interactive turns on the shared agent queue (#3064)
- fix(agents): Hydrate stdio MCP env secrets for subagent configs (#2945)
- fix(agents): Harden MCP bridge discovery against silent tool loss (#2946)
- fix(agents): Size MCP scope token TTL to turn and re-mint on resume (#2947)
- fix(agents): Emit terminal stream END only after finalize_turn (#3120)
- fix(agents): Stream replay hardening (#2897)
- feat(api): Configure versioned resource resolution (#2905)
- fix(agents): Batch agent approvals (#2916)
- feat(agents): Workflow draft authoring tools and MCP refactor (#2920)
- feat(agents): Built-in workspace-chat skills for workflow authoring (#2921)
- feat(agents): Preserve last error (#2929)
- feat(agents): Chat interrupts (#2930)
- fix(agents): Make preset deletion a soft delete (#2931)
- feat(agents): Add Claude Sonnet 5 to platform catalog (#2935)
- fix(ui): Include pending approval as streamable status (#2983)
- feat(ui): Show provider and hover card on agent tool chips (#2984)
- feat(infra): Add global soft-delete query filter (#2998)
- feat(agents): Expand skill soft delete to deleted_at (#2999)
- feat(agents): Add stable skill slugs with live uniqueness (#3001)
- refactor(agents): Resolve skill identifiers by id then live slug (#3003)
- feat(agents): Add pinned_version_id columns and pin API (#3004)
- feat(agents): Make preset skill bindings head-only (#3005)
- revert(agents): Remove resource version pinning (#3014)
- fix(agents): Remove duplicate token remint (#3030)
- feat(agents): Add GPT-5.6 platform catalog models (#3031)
- fix(agents): Align subagent tool input with execution (#3033)
- fix(agents): Improve stdio MCP probe timeouts (#3071)
- fix(agents): Surface stream idle timeouts (#3076)
- feat(agents): Mistral provider (#3108)
- fix(agents): Exclude run_python from agent tools (#3115)
- fix(integrations): Correlate agent preset catalog IDs (#3117)
- feat(agents): Expose catalog IDs for custom models in UI and API (#3122)
- fix(agents): Workflow execution tools (#3150)
- fix(agents): Preserve NUL session history (#3156)
- fix(agents): Enable deferred tool loading in the Claude runtime (#3163)
- fix(agents): Sanitize preset command values (#3196)
- refactor(engine): Remove obsolete PydanticAI plugin (#3203)
Tracecat MCP
Core actions
Integrations
- perf(integrations): Batch GitHub export writes to avoid rate limits (#3073)
- perf(integrations): Deduplicate manifests in batch queries (#3169)
- feat(integrations): Add GitLab workspace sync (#2925)
- fix(integrations): Register refresh_token grant and request offline_a… (#3069)
- chore(integrations): Add workspace export diagnostics (#3058)
- feat(integrations): Add Google Security Command Center integration (#3046)
- feat(integrations): Restore okta mcp (#2918)
- feat(integrations): Okta sdk tools (#2919)
- feat(integrations): Add Slack canvas templates (#2927)
- feat(integrations): Freshservice mcp and actions (#2938)
- fix(integrations): Cap slack paginated results at limit (#2948)
- fix(integrations): Add caps to cloudflare and google api pagination (#2953)
- feat(integrations): Test stdio mcp connections (#2959)
- fix(integrations): Make views.update hash an optional input (#2974)
- feat(integrations): Add SentinelOne PowerQuery and MCP templates (#2994)
- fix(integrations): Correct alertmedia search_users input schema (#3021)
- fix(integrations): FOR UPDATE lock during oauth refresh flow (#3047)
- fix(ui): Prevent repeated MCP failure toast on refresh (#3048)
- feat(integrations): Add SentinelOne alert lifecycle actions (#3049)
- fix(integrations): Correct SentinelOne template contracts (#3084)
- fix(integrations): Stop forwarding inbound auth to user MCP servers (#3132)
- fix(integrations): Unblock catalog MCP OAuth setup (#3165)
- feat(integrations): Add OpenSearch threat hunting actions (#3197)
- feat(integrations): Expand Sublime investigation actions (#3199)
- test(integrations): Drop third-party contract tests (#3205)
Engine
- feat(engine): Add workspace sync export (#2859)
- feat(engine): Expose concurrency controls in deployments (#3153)
- chore(engine): Remove experimental pool backend (#3167)
- fix(engine): Mark pool backend experimental, auto selects ephemeral (#3146)
- feat(engine): Expose Temporal worker concurrency tuning env knobs (#2917)
- perf(engine): Build loop regions in a single pass (#2928)
- fix(engine): Offload secret masking (#3102)
- fix(infra): Wire pool timeout and per-service application_name (#3134)
- fix(engine): Resolve top-level action results in subflow trigger_inputs inside scatter (#2951)
- fix(infra): Isolate bypass-RLS sessions on a dedicated pool (#3141)
API
- docs(api): Fix Okta SAML audience restriction (#3079)
- feat(api): Allow admins to delete unused platform registry versions (#2960)
- feat(ui): Add sidebar organization switcher (#3027)
- fix(api): Make tier dialogs scrollable (#2969)
- fix(rbac): Allow org service accounts to manage settings (#3056)
- test(api): Cover successful router dispatch (#3110)
- refactor(rbac): Centralize grant scope validation (#3222)
User interface
- feat(ui): Redesign commit selector dropdown (#2883)
- feat(ui): Add dark mode across the app (#2963)
- feat(ui): Add missing tool integration icons (#2985)
- feat(ui): Add folder breadcrumbs to workflow and agent details (#2991)
- feat(ui): Persist workspace panel preferences (#2992)
- feat(ui): Rename workflows from the dashboard and builder (#3083)
- fix(ui): Remove duplicate skills row divider (#2922)
- fix(ui): Keyboard selection and dismiss dead-state in tag combobox (#2937)
- fix(ui): Center column type label in table create dialog (#2941)
- fix(ui): Make CSV import preview header opaque (#2942)
- fix(ui): Reset table delete confirmation input on close (#2944)
- fix(ui): Keep chat tool chips on one row with +N overflow (#2954)
- fix(ui): Align chat composer footer controls (#2955)
- fix(ui): Show tool limit message in chat tools picker (#2956)
- fix(ui): Prevent builder panel tabs and content clipping at narrow widths (#2958)
- fix(ui): Reset insert-row form when the dialog closes (#2964)
- fix(ui): Improve MCP connection option dark mode (#2982)
- fix(ui): Add pointer cursor to clickable table rows (#3000)
- fix(ui): Report delete errors and gate bulk delete by scope (#3002)
- fix(ui): Remove stacked bottom padding in action inspector panel (#3013)
- fix(ui): Avoid inherited edges when duplicating actions (#3016)
- fix(ui): Improve expression highlight contrast (#3043)
- fix(ui): Remove Workspace sidebar slide animation (#3044)
- fix(ui): Use pointer cursor on workflow execution rows (#3070)
- fix(ui): Keep pull actions visible after preview (#3086)
- fix(ui): Use pointer cursor on dropdown menu items (#3089)
- fix(ui): Keep dialogs within viewport (#3095)
- fix(ui): Show all workflow run payload streams (#3114)
- fix(ui): Keep pull actions visible for large previews (#3118)
- fix(ui): Render workspace sync toast as external link (#3123)
- fix(ui): Calibrate notification banners for dark mode (#3127)
- fix(ui): Keep settings modal content within dialog width (#3209)
- test(ui): Polyfill ResizeObserver in jsdom setup (#2961)
- refactor(ui): Extract shared tooltip line helper (#3223)
Infrastructure
- docs(infra): Consolidate TLS and certificate guidance for self-hosting (#2950)
- docs(infra): Explain Helm application updates (#3155)
- perf(infra): Add workflow_definition lookup index (#2957)
- chore(infra): Remove unused entrypoint.sh migration wrapper (#3147)
- ci: Pin ruff to pyproject version in lint workflow (#3121)
- chore(infra): Remove Kubernetes submodule (#3109)
Observability
- fix(logging): Simplify workflow execution logs (#3067)
Documentation
- docs: Add AI security architecture (#3158)
- docs: Overhaul security, isolation, and audit log documentation (#3166)
- docs: Add API reference and reorganize core actions (#3032)
- docs: Discourage untyped dictionaries (#3068)
- docs: Clarify case Markdown and agent MCP support (#3087)
- docs: Prefer dataclass slots and typed attribute access (#3103)
- docs: Prefer frozen slotted dataclass over NamedTuple (#3160)
- docs: Require LOC breakdown table in PR bodies (#3161)
- docs: Add secrets and OAuth info to http section (#3206)
Performance
- test(build): Add postgres scatter capacity harness (#3140)
Dependencies
- build(deps): Pin Python dependency versions (#3175)