Breaking changes
- make Action Gateway mandatory (#3075)
Security
- scope workflow execution definitions (#2952)
- unblock OpenCode OAuth + clearer org-resolution errors (#2990)
- bump patched security dependencies (#3054)
- constrain nested action execution (#3072)
- patch deps (#3085)
- drop force flag from sync_custom_registry tool (#3138)
- add AI security architecture (#3158)
- terminate action process groups (#3159)
- overhaul security, isolation, and audit log documentation (#3166)
- patch dependabot alerts (#3192)
- add GitHub REST YAML template catalog (#3193)
- add GitLab REST YAML template catalog (#3194)
- add MISP security integration (#3198)
- mark session cookie Secure when public API uses HTTPS (#3201)
Integrations
- adopt ctx facade over get_context() (#2885)
- restore okta mcp (#2918)
- okta sdk tools (#2919)
- add Slack canvas templates (#2927)
- freshservice mcp and actions (#2938)
- cap slack paginated results at limit (#2948)
- add caps to cloudflare and google api pagination (#2953)
- test stdio mcp connections (#2959)
- make views.update hash an optional input (#2974)
- Add SentinelOne PowerQuery and MCP templates (#2994)
- correct alertmedia search_users input schema (#3021)
- add Scanner YAML templates (#3037)
- FOR UPDATE lock during oauth refresh flow (#3047)
- prevent repeated MCP failure toast on refresh (#3048)
- add SentinelOne alert lifecycle actions (#3049)
- pin stdio catalog integrations (#3053)
- support optional oauth_resource override for mcp (#3081)
- correct SentinelOne template contracts (#3084)
- support mcp resource content blocks (#3105)
- stop forwarding inbound auth to user MCP servers (#3132)
- unblock catalog MCP OAuth setup (#3165)
- add Elastic API templates (#3176)
- add OpenSearch threat hunting actions (#3197)
- expand Sublime investigation actions (#3199)
- drop third-party contract tests (#3205)
Agents
- stream replay hardening (#2897)
- configure versioned resource resolution (#2905)
- batch agent approvals (#2916)
- workflow draft authoring tools and MCP refactor (#2920)
- built-in workspace-chat skills for workflow authoring (#2921)
- preserve last error (#2929)
- chat interrupts (#2930)
- make preset deletion a soft delete (#2931)
- add Claude Sonnet 5 to platform catalog (#2935)
- include pending approval as streamable status (#2983)
- show provider and hover card on agent tool chips (#2984)
- add global soft-delete query filter (#2998)
- expand skill soft delete to deleted_at (#2999)
- add stable skill slugs with live uniqueness (#3001)
- resolve skill identifiers by id then live slug (#3003)
- add pinned_version_id columns and pin API (#3004)
- make preset skill bindings head-only (#3005)
- remove resource version pinning (#3014)
- remove duplicate token remint (#3030)
- add GPT-5.6 platform catalog models (#3031)
- align subagent tool input with execution (#3033)
- improve stdio MCP probe timeouts (#3071)
- surface stream idle timeouts (#3076)
- mistral provider (#3108)
- exclude run_python from agent tools (#3115)
- correlate agent preset catalog IDs (#3117)
- expose catalog IDs for custom models in UI and API (#3122)
- workflow execution tools (#3150)
- preserve NUL session history (#3156)
- enable deferred tool loading in the Claude runtime (#3163)
- sanitize preset command values (#3196)
- remove obsolete PydanticAI plugin (#3203)
- agent mention autocomplete in case comment composer (#3211)
- parse and persist case comment mentions (#3213)
Performance improvements
- async case duration sync (#2781)
- expose Temporal worker concurrency tuning env knobs (#2917)
- build loop regions in a single pass (#2928)
- add workflow_definition lookup index (#2957)
- move first-prompt auto-title off the request path (#3062)
- prioritize interactive turns on the shared agent queue (#3064)
- batch GitHub export writes to avoid rate limits (#3073)
- cap bulk case action request concurrency (#3091)
- defer case linked-row hydration to tables tab (#3093)
- add batch case update and delete endpoints (#3097)
- offload secret masking (#3102)
- wire pool timeout and per-service application_name (#3134)
- add postgres scatter capacity harness (#3140)
- avoid unused relationship loads in case metrics (#3157)
- deduplicate manifests in batch queries (#3169)
- defer case number allocation (#3171)
Enhancements
- add workspace sync export (#2859)
- redesign commit selector dropdown (#2883)
- add GitLab workspace sync (#2925)
- add include_payload param to cases search (#2926)
- Allow admins to delete unused platform registry versions (#2960)
- paste images inline in case description and comments (#2962)
- add dark mode across the app (#2963)
- add missing tool integration icons (#2985)
- Add folder breadcrumbs to workflow and agent details (#2991)
- Persist workspace panel preferences (#2992)
- add sidebar organization switcher (#3027)
- add Google Security Command Center integration (#3046)
- expand audit log coverage (#3082)
- rename workflows from the dashboard and builder (#3083)
- add payload copy button (#3090)
- feat(cases) ENG-1597: add team scoped agent session reads (#3204)
Bug fixes
- remove duplicate skills row divider (#2922)
- render Mermaid diagrams in case descriptions (#2934)
- keyboard selection and dismiss dead-state in tag combobox (#2937)
- center column type label in table create dialog (#2941)
- make CSV import preview header opaque (#2942)
- reset table delete confirmation input on close (#2944)
- hydrate stdio MCP env secrets for subagent configs (#2945)
- harden MCP bridge discovery against silent tool loss (#2946)
- size MCP scope token TTL to turn and re-mint on resume (#2947)
- resolve top-level action results in subflow trigger_inputs inside scatter (#2951)
- keep chat tool chips on one row with +N overflow (#2954)
- align chat composer footer controls (#2955)
- show tool limit message in chat tools picker (#2956)
- prevent builder panel tabs and content clipping at narrow widths (#2958)
- reset insert-row form when the dialog closes (#2964)
- return 409 when creating a unique index on duplicate values (#2965)
- make tier dialogs scrollable (#2969)
- improve MCP connection option dark mode (#2982)
- add pointer cursor to clickable table rows (#3000)
- report delete errors and gate bulk delete by scope (#3002)
- remove stacked bottom padding in action inspector panel (#3013)
- avoid inherited edges when duplicating actions (#3016)
- serialize attachment quota checks per case (#3019)
- improve expression highlight contrast (#3043)
- remove Workspace sidebar slide animation (#3044)
- correct Okta private key placeholder (#3055)
- allow org service accounts to manage settings (#3056)
- simplify workflow execution logs (#3067)
- register refresh_token grant and request offline_a… (#3069)
- use pointer cursor on workflow execution rows (#3070)
- fix Okta SAML audience restriction (#3079)
- keep pull actions visible after preview (#3086)
- use pointer cursor on dropdown menu items (#3089)
- keep dialogs within viewport (#3095)
- improve linked rows empty state (#3096)
- show all workflow run payload streams (#3114)
- keep pull actions visible for large previews (#3118)
- emit terminal stream END only after finalize_turn (#3120)
- render workspace sync toast as external link (#3123)
- surface lookup errors (#3124)
- calibrate notification banners for dark mode (#3127)
- isolate bypass-RLS sessions on a dedicated pool (#3141)
- ensure valid payloads and resource attribution (#3143)
- support multi-replica sessions (#3151)
- keep settings modal content within dialog width (#3209)
Infrastructure
- remove Kubernetes submodule (#3109)
- expose concurrency controls in deployments (#3153)
- remove experimental pool backend (#3167)
Documentation
- consolidate TLS and certificate guidance for self-hosting (#2950)
- recommend batched DB writes (#2995)
- point Google Cloud SecOps docs link at the SecOps server (#3029)
- add API reference and reorganize core actions (#3032)
- add audit log documentation (#3036)
- discourage untyped dictionaries (#3068)
- clarify case Markdown and agent MCP support (#3087)
- prefer dataclass slots and typed attribute access (#3103)
- mark pool backend experimental, auto selects ephemeral (#3146)
- explain Helm application updates (#3155)
- prefer frozen slotted dataclass over NamedTuple (#3160)
- require LOC breakdown table in PR bodies (#3161)
- Add secrets and OAuth info to http section (#3206)
Dependencies
- pin Python dependency versions (#3175)
Build system
- remove unused entrypoint.sh migration wrapper (#3147)
Other improvements
- polyfill ResizeObserver in jsdom setup (#2961)
- add workspace export diagnostics (#3058)
- prefer fd for file searches (#3092)
- ignore pi subagent state (#3106)
- cover successful router dispatch (#3110)
- pin ruff to pyproject version in lint workflow (#3121)
- remove broken OpenAPI template converter (#3164)
- centralize grant scope validation (#3222)
- extract shared tooltip line helper (#3223)
Full changelog: 1.0.0-beta.50...1.0.0-beta.51