The variable endpoints no longer take an account link from the caller. The connect
flows create the token variable first and pass its path to create_account, which
links it server-side. This replaces the creator check and the created_by
bookkeeping, along with both migrations.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix(mcp): escape JSON inlined in the MCP OAuth callback script
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to dd0c7087f9b2453260f3d73b0d589042b4393a1d
This commit updates the EE repository reference after PR #900 was merged in windmill-ee-private.
Previous ee-repo-ref: b8384a2346c2c228ac645e3209a04b1f08627278
New ee-repo-ref: dd0c7087f9b2453260f3d73b0d589042b4393a1d
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* fix: make the schedule editor's saved baseline reactive
* fix: spell the schedule pause time the way the picker writes it
* fix: read a zone-less naive date-time as wall-clock time
---------
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* chore: read the caller once in workspace settings handlers
* chore: update ee-repo-ref to bfbf9154df83c5256a35181fc9ea3b715b66c35f
This commit updates the EE repository reference after PR #901 was merged in windmill-ee-private.
Previous ee-repo-ref: 6fbcc79cdd5bb30b362ae2a44e651ede66830ee3
New ee-repo-ref: bfbf9154df83c5256a35181fc9ea3b715b66c35f
Automated by sync-ee-ref workflow.
---------
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
* fix: align sidebar home with the header when ai sessions is off
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* refactor: share the sidebar switch row condition
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* feat: let AI agents answer in Slack
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: dedupe Slack deliveries by message and route only connected workspaces
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: key Slack conversations with the workspace secret and require signed Slack requests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep a named agent on its thread after an empty question and flag a missing Slack signing secret
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: register the slack_agents token scope domain
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: name the Slack bot, offer Slack only for chat agents, align the agent API tab with webhooks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: warn when Slack can't be reached instead of showing a placeholder bot name
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: chat SDK, streaming examples and a copyable integration prompt on the agent API tab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep the base path in the chat SDK example, list slack_agents token scopes, bound the bot name lookup
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: opt into the AI agent Slack scopes at connect, store the signing secret in instance settings, surface the integration prompt
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: dispatch Slack agents only on a verified request, warn when the connection lacks the agent scopes, register the callback redirect URLs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: point the agent chat examples at @windmill-labs/chat-sdk
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: build the agent API examples on the configured API base URL
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: say that a channel's default agent takes its /windmill commands
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: list the channels answered by an agent in the workspace Slack settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: keep the Slack signing secret in SLACK_SIGNING_SECRET, warn at connect when it is missing, move the integration prompt to a tab
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: wrap copyable code blocks at word boundaries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: open the agent panel on its API tab, put the AI prompt first, list channels like the critical alert channels, cap the manifest's height
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: group the agent API examples by AI prompt, TypeScript and HTTP, with React and framework-free chat SDK examples
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: have the agent integration prompt read the token from WINDMILL_TOKEN
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: trim the agent API tab intro, name the Slack app in mentions, define the SDK example's output
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: share agents in selected Slack channels, run as their identity
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: share agents in Slack channels with anyone or workspace members only
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: set who can ask an agent in Slack and its channels from its settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: treat a missing Slack audience as workspace members
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: list Slack channels before who can ask, name the run-as user in each choice
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: name the next deploy's run-as user in Slack choices, turn agents on by default when connecting
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: answer agents on mentions only, group agent settings into sections
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: show how to ask an agent in Slack first, keep agent scopes opt-in
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: list agents shared in Slack in a setting card and table
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 10bc314c95094c0851743cbca31b50a3b37d42fd
This commit updates the EE repository reference after PR #865 was merged in windmill-ee-private.
Previous ee-repo-ref: 47d8fbac461171bd93d888b49cc1c7730a2b3f96
New ee-repo-ref: 10bc314c95094c0851743cbca31b50a3b37d42fd
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: Ruben Fiszel <ruben@windmill.dev>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* feat: name the action on chat tool confirmation buttons
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: size chat confirmation footer buttons with unifiedSize and the UI font
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
* fix: let devops users reach instance pages without a workspace
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: hide workspace-bound worker actions when no workspace is selected
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep the page header bar in the no-workspace instance view
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: probe nsjail with a real jail and add a gVisor compat mode
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: route dbt captured phases through the gVisor compat step and harden the probe dir
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: patch nsjail with a gvisor_compat option instead of applying rlimits from the worker
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep DuckDB jailed on a sandboxed worker whose nsjail probe failed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* docs: link the upstream gVisor issues from the nsjail patch
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: let ALLOW_PRIVATE_MCP_SERVER_URLS name the private hosts it allows
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: warn once about invalid MCP private-host entries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: warn when an autoscaled worker group has no tags to count
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop warning autoscaling events when rolling the migration back
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop the autoscaling warning event and its migration
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: tell agent groups to match custom tags to their token tags
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to a673d2e3fe12927921be86c3a52bd9c956759c65
This commit updates the EE repository reference after PR #898 was merged in windmill-ee-private.
Previous ee-repo-ref: bbb21dad8a18f0593a2e1a2f2930b427f44404cd
New ee-repo-ref: a673d2e3fe12927921be86c3a52bd9c956759c65
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* feat: let agent workers authenticate with a workload identity token
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: throttle failed workload identity key fetches per issuer
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep stale workload identity keys through an issuer outage
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse workload identity rules with an empty claim value
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: validate workload identity issuers in declarative sync and share the JWKS cache
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: say workload identity issuers are optional in agent worker settings
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 96e8e2aa15bdc5968a1dae10f4e81d47d7ea49e0
This commit updates the EE repository reference after PR #897 was merged in windmill-ee-private.
Previous ee-repo-ref: 0e98880edb8db269d53120ca606025c81f320f5c
New ee-repo-ref: 96e8e2aa15bdc5968a1dae10f4e81d47d7ea49e0
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: gate unix-only bun staging items so the Windows worker build compiles
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: compile bun_install_can_stage only where it is used
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* perf: opt into sqlx test templates through SQLX_TEST_TEMPLATE
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: raise the sqlx test connection cap so concurrent tests cannot starve
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* test: wait on the seed script's own git sync push in e2e tests
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: TEMP loop git sync e2e with race diagnostics (to be dropped)
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: pass --save-text-lockfile only to bun installs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: run bun and npm installs under nsjail sandboxing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: strip workspace-dependencies header from npm-mode package.json
* chore: bump npm in worker images to 12
* docs: describe npm 12 install-script policy in install comment
* fix: mount npmrc cafile paths given with ${VAR} or ~ in the install jail
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* perf: keep bun's cache hardlinks for jailed installs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: harden the bun install staging dir and npm-mode jail mounts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: reach the bun staging dir only through no-follow descriptors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: create bun staging files new and check outputs after the move
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add DISABLE_BUN_INSTALL_SANDBOX to run bun installs unjailed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: retry npm installs refused git or remote fetches with a deprecation warning
* fix: point the npm fetch fallback warning at config that works on CE too
* fix: read npm fetch refusals from its debug log and honor every npm config source
* fix: force text output for the npm config check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* test: stop backend tests waiting out real time they do not need
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: delete the unused workspace_dependencies fixture
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* test: fix error handler test flake and merge handler test binaries
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: tighten workspace handler test comments
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* perf: clone sqlx test databases from a migrated template
* perf: lock sqlx test templates shared while cloning
* chore: note the tag that keeps the sqlx fork rev fetchable
* fix: pass --save-text-lockfile only to bun installs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: run bun and npm installs under nsjail sandboxing
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: mount npmrc cafile paths given with ${VAR} or ~ in the install jail
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* perf: keep bun's cache hardlinks for jailed installs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: harden the bun install staging dir and npm-mode jail mounts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: reach the bun staging dir only through no-follow descriptors
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: create bun staging files new and check outputs after the move
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add DISABLE_BUN_INSTALL_SANDBOX to run bun installs unjailed
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* feat: add a no_network annotation for sandboxed python, bash, bun and r jobs
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep nodejs relative imports and dedicated workers working under no_network
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: bundle bun no_network jobs so relative imports resolve before the run
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: point ee-repo-ref at the runner group no_network fix
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: state the no_network token rule once
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: refuse no_network jobs whose workspace imports would be fetched at run time
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: let type-only workspace imports through the no_network import check
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to ca4a1959a0d2257d413a57349939053ac3473c6b
This commit updates the EE repository reference after PR #895 was merged in windmill-ee-private.
Previous ee-repo-ref: 3841923cfd117b6b907ac3e84b26f07bde41f8ed
New ee-repo-ref: ca4a1959a0d2257d413a57349939053ac3473c6b
Automated by sync-ee-ref workflow.
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
* fix: refuse dot segments in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse spaces, query and fragment markers in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse percent signs in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: let ALLOW_PRIVATE_AI_BASE_URLS name the private hosts it allows
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse loose and wildcard allowlist entries, judge embedded v4
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: never admit local-use NAT64 addresses through an allowlist net
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: keep script and flow deploys off a second pool connection
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: raise a folder default's errors only when it applies
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: skip the fork lock when a fork creation has no storage to purge
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: word the fork lock skip for both purge callers
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse dot segments in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse spaces, query and fragment markers in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: refuse percent signs in AI proxy paths
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* fix: scope delete_jobs side-table deletes to the request workspace
The /jobs/delete purge deleted resume_job, v2_job_runtime, v2_job_status
and concurrency_key rows by job id alone. Those tables have no
workspace_id, so a workspace admin could pass another workspace's job ids
and wipe its flow status, runtime, resume and concurrency rows. Scope
each delete through v2_job, as zombie_job_counter already is.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* refactor: filter delete_jobs ids to the workspace once
Resolve the request's job ids against v2_job up front and run every
delete on that filtered list, instead of repeating the v2_job subquery in
each side-table delete. The workspace scoping lives in one place and the
side-table deletes keep their plain id form.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
* test: run the isolated-forks rule test in its own workspace
PROTECTION_RULES_CACHE is process-wide and keyed by workspace id, so the
other base-fixture tests in protection_rules.rs, running concurrently on
their own databases, could cache test-workspace's rules without the
RequireIsolatedForks ruleset and let the fork through to the data table
copy (400 instead of 403) on main.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: match nsjail profile lines so the envar check passes on CRLF checkouts
script_profiles_take_envars_before_their_fixed_ones searched for
"\n{ENVARS}\n", which a Windows checkout (CRLF) never contains, failing
cargo_test_windows since v1.834.0.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>