Arcade 1.11.1

App version f0ceab0 · released 2026-10-02 · previous 1.11.0

Release notes

This release changes how every worker pod runs: arcadedev/worker is now the supervisor image, which starts one runtime per toolkit version on demand. It also always encrypts recorded tool-execution payloads, and it changes enum values in three toolkits. A default install upgrades with no values change. Read the Upgrade notes for memory sizing, first-call latency, and the toolkit callers that must migrate.

Database migrations

This release applies schema changes. Migrations run automatically on helm upgrade unless <service>.database.migrations is false.

  • Engine — adds one nullable column to the gateway table. Nothing in this release reads it, but the new engine requires the schema version it brings, so it must apply before the new image serves. Additive; a rollback leaves the column in place, unused.
  • Coordinator and experience-api — none.

Security

  • Recorded tool-execution inputs and outputs are always encrypted at rest. 1.10.0 added encryption as an opt-in; it can no longer be left off. See Upgrade notes.
  • Disabling an account now cuts off its dashboard and CLI sessions immediately. Their tokens used to keep working until they expired, including to create project API keys. Project API keys are unaffected.

Added

  • Worker supervisor settings under workerDefaults.supervisor: prewarmToolkits, serveToolkits, maxChildren, idleTtlSeconds, capacityWaitSeconds, venvsSizeLimit and peerRouting.*. See Upgrade notes.
  • workers[].toolPackages (and workerDefaults.toolPackages) limits a worker to the listed toolkit packages, for example [arcade_math].
  • Worker startup probes. A startup probe replaces the fixed 180-second delay on liveness and readiness, so a worker takes traffic as soon as it is healthy and is restarted if it is not up within 300 seconds. Tune with workerDefaults.probes.startup, .liveness and .readiness, or per worker under workers[].probes.
  • Suggestions across a whole project. GET /v1/orgs/{org_id}/projects/{project_id}/suggestions lists the suggestions from every gateway in a project in one request, ranked by supporters and filterable by gateway and submitter. 1.11.0 added the per-gateway inbox.
  • New tools in existing toolkits:
    • Outlook Mail 3.5.0: ListEmailCategories, SaveEmailCategory, RenameEmailCategory and DeleteEmailCategory. Rename and delete update every email that carries the category, and refuse when more than 50 do.
    • Outlook Calendar 3.4.0: RespondToEvent accepts, declines or tentatively accepts an invitation, with an optional note or proposed time; ForwardEvent sends an invitation to someone not yet invited; FindMeetingTimes proposes ranked times for a group without booking anything. GetSchedule reports per person whether their calendar could be read, so a calendar it cannot see no longer reads as free.
    • Jira 3.3.0: CreateIssue and UpdateIssue accept markdown descriptions, components, fix versions and any other field, including custom fields. SearchIssuesWithJql pages past the first page.
    • OneDrive 1.1.0 and SharePoint 1.1.0: ReadFile returns the text of a PDF or plain-text file.
    • Microsoft Teams 1.1.0: GetChatMessages pages through older chat history.

Changed

  • arcadedev/worker runs the supervisor. See Upgrade notes.
  • Google Calendar, Linear and Discord change enum values. See Upgrade notes.
  • The Browse catalogue on the Servers page grows from 163 to 477 vendor-hosted MCP servers, each still added in one click. An OAuth server must accept your deployment's callback URL.

Fixed

  • MCP clients behind a proxy that rewrites the Host header can sign in to a gateway again. They no longer get "token has invalid audience" right after authorizing: the gateway now also accepts tokens issued for its public URL, which the chart derives from the API hostname. No values change.
  • Authorize & Run no longer fails with oauth2 details are required when a toolkit's OAuth provider shares its ID with a remote MCP server in the project, such as a remote server named servicenow beside the ServiceNow toolkit.
  • Re-authorizing Zoom, Calendly or Square for a new tool keeps the scopes already granted. Users switching between tools were asked to authorize again on every switch.
  • Engine request log lines carry trace_id and span_id, so a trace leads to its request log line. A recovered handler panic is marked as an error on its trace.
  • Deleting a project that is a member's default project explains the refusal — remove those members first — instead of returning a bare "Bad request".
  • A worker image tag made only of digits renders as written. Passed with --set, a short commit SHA such as 6505385 used to render as 6.505385e+06, and the pod failed to pull.
  • Toolkits:
    • Gmail 8.12.0: replies and drafted replies quote the thread the way Gmail's Reply button does, with formatting and links kept and the "On … wrote:" time in the user's time zone. Both tools now request calendar.settings.readonly, so users are asked to authorize again; if you use your own Google OAuth app, add that scope to it.
    • Outlook Mail: replies and forwards quote the original's Sent: line in the mailbox's time zone instead of UTC. They now request MailboxSettings.Read, so users may be asked to authorize again.
    • Google Calendar: a date-only start and end create a real all-day event, and UpdateEvent works on events on any calendar through calendar_id. updated_calendar_id now actually moves the event.
    • Microsoft Teams: GetChatMessages date filters work, and a chat whose newest page holds only system events is no longer reported empty. Team lookups explain permission and not-found errors.
    • Slack 2.7.0: usernames match a person's real name and display name as well as their handle. An action that would act on an ambiguous name returns a retryable error listing the candidates. ListConversations with no filter returns private channels, DMs and group DMs as its description says.
    • Zoom 2.1.3: meeting invitation, transcript, recording and summary lookups find a never-used Personal Meeting Room and instant meetings. They request two more scopes, so some users are asked to authorize once more.

Removed

  • engine.encryptExecutionPayloads. Payloads are always encrypted.

Operator impact

  • Worker pods run the supervisor: check memory limits, consider supervisor.prewarmToolkits, and drop WORKERS from extraEnv.
  • New values: workerDefaults.supervisor.*, workerDefaults.toolPackages, workerDefaults.probes.* and their workers[] counterparts. All default to the previous behaviour except that workers now use a startup probe.
  • Removed value: engine.encryptExecutionPayloads.
  • The worker image is about 3 GB uncompressed; size private mirrors and node disk accordingly.
  • The engine migration must apply before the new engine image serves.
  • Optional, and only if tool-execution recording was enabled before this release: run backfill-execution-payloads to encrypt rows stored as plaintext.
  • Operators with their own Google OAuth app add calendar.settings.readonly.

API & behavior

  • GET /v1/orgs/{org_id}/projects/{project_id}/suggestions: new.
  • Deleting a member's default project: 422 with an explanation, instead of 400.
  • MCP gateway OAuth: tokens issued for the gateway's public URL are accepted.
  • Google Calendar 4.1.1, Linear 8.0.0 and Discord 2.0.0 change enum values; previous versions are still served.
  • Gmail, Outlook Mail and Zoom tools request additional scopes.