Members can use the shared connection without reading its token. It reuses
workspace_integrations.resource_path, so existing workspace connections stay
usable by members after upgrading.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
createAccount takes the variable and the store creates both in one
transaction, so a connect is either fully saved or not at all. The connect
flows make that single call instead of creating the variable and linking it
afterwards.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
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>
* 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>
* 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>
* feat: route the python SDK's S3 client settings through the S3 proxy
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop the boto3 config key and expose the proxied bucket to polars
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: proxy S3 settings only for server-signed tokens and keep tls verify
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* feat: isolate fork object storage under a per-fork prefix with read-through
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: guard fork storage isolation against traversal, shared lakes and orphaning
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: serialize fork purges with same-id creation and guard shared middle forks
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: drop fork storage mappings on every replica and lock fork deletion against child creation
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* wip: require isolated forks rule
* feat: add a Require isolated forks protection rule
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* fix: recheck isolated forks under the datatable lock and judge bypass in the base
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* chore: update ee-repo-ref to 455681e55eb7cdfcfdb7cd79cbae75b333e07943
This commit updates the EE repository reference after PR #893 was merged in windmill-ee-private.
Previous ee-repo-ref: 93f26e3cf816e4eb97b7d4dbbb5fc97fdf9821af
New ee-repo-ref: 455681e55eb7cdfcfdb7cd79cbae75b333e07943
Automated by sync-ee-ref workflow.
* fix: exempt only datatables the base does not own, compact fork data choices
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
* test: pin the isolated-forks owner check, fix its docs wording
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
---------
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>