Files
windmill/system_prompts/base/workspace-settings.md
T
ebeea51492 feat: composer pills that teach Windmill from the workspace (#11889)
* feat: open empty ai sessions with the home build-with-ai composer

* feat: vertically center the empty session composer

* fix: drop the stray indent on the session composer's rotating placeholder

* fix: give the starter composer a stable accessible name

* feat: pick workspace, fork and permission mode from the home composer

* fix: hand off the workspace home displays, not only an explicit pick

* feat: drop the starter prompt chips from the empty session

* feat: home and empty ai sessions share one session composer

* fix: keep session draft attachments across home and session page

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: drop superseded home ai-hidden responses

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: load home session starter lazily to keep monaco out of home

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat: redesign home composer and items list

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat: align the composer chat icon, share the folder row, add a home preview page

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* refactor: drop home tech debt, fix phone layout and keyboard access, remove the home preview page

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat: suggest composer prompts from workspace signals

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: pass dev page placeholders through inputProps, key settled signals by role

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* perf: read filter chip positions before hiding any in clampRows

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: scope composer signal caches to the account, drop stale workspace answers

Co-Authored-By: Claude Opus 5.5 (1M context) <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: e922599943c472a6d0f736f629ae04081f866686

New ee-repo-ref: dd0c7087f9b2453260f3d73b0d589042b4393a1d

Automated by sync-ee-ref workflow.

* 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: e922599943c472a6d0f736f629ae04081f866686

New ee-repo-ref: dd0c7087f9b2453260f3d73b0d589042b4393a1d

Automated by sync-ee-ref workflow.

* feat: name workspace items and connections in composer pills

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* feat: teach one Windmill concept per composer pill from the workspace

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: drop the failed-deploy pill, which reports a run outcome

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: read favorites from the workspace's own item list

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* chore: regenerate mcp session guidance for the data table row

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: address cubic review of the composer signals and data table guidance

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* test: make the billing fixture's receipt step send what its summary says

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: keep loaded item kinds and drop stale loads in the composer playground

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: preview an instance admin who is a plain member in the composer playground

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

* fix: scope the enterprise note to external_instance and check receipt sends

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

---------

Co-authored-by: Diego Imbert <diego@windmill.dev>
Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-authored-by: windmill-internal-app[bot] <windmill-internal-app[bot]@users.noreply.github.com>
2026-10-23 15:06:37 +02:00

6.9 KiB

Workspace settings

Everything an admin sets on the Workspace settings page is one document: a mapping of top-level keys, the same layout as the settings.yaml file wmill sync keeps. Only a workspace admin can read or change it.

Applying a document

  • A partial document changes only the keys it states; every key it omits is left as it is.
  • Each key is replaced whole, so read its current value and send it back edited: a nested object given with one field replaces the stored object with that one field.
  • A key set to null clears that setting; an on/off switch cleared this way reads as false.
  • Each setting is written through the same path the settings page uses, with the same validation and audit log. The writes are not one transaction: when one fails the apply stops, and the error says what was already written.
  • A dry run reports the changes, as before / after per key, without writing anything.
  • name is never applied: rename a workspace on the settings page. color is applied only when set to a value, so null does not clear it.
  • A key the server does not know is ignored and named in the warnings: check them, since a typo otherwise reads as "nothing to change".
  • A setting this edition does not offer (Enterprise only) is refused, by the dry run too.

Secrets

slack_oauth_client_secret is the one secret. A read shows __SENSITIVE_AND_UNCHANGED__ in place of a set secret; sending that placeholder back keeps the stored value. A value starting with $encrypted: is decrypted with the workspace key, and one encrypted with another workspace's key is left unchanged with a warning; any other value is taken as plaintext. Never write a secret you were not given: keep the placeholder.

Keys

Key Value
auto_invite { enabled, mode: invite | add, operator, instance_groups?, instance_groups_roles? }. The instance groups are managed only when instance_groups is stated; clearing a group removes the members it added.
error_handler / success_handler { path, extra_args?, muted_on_cancel?, muted_on_user_path? }, path being script/<path> or flow/<path>.
error_handler_fallback_to_instance_alerts Report failures to the instance critical alert channels when no error handler is set.
webhook URL POSTed a JSON event on every change to the workspace's items.
ai_config Providers, default and completion models, custom prompts, copilot_disabled.
large_file_storage Workspace object storage: { type, s3_resource_path | azure_blob_resource_path | gcs_resource_path, public_resource?, secondary_storage?, advanced_permissions? }.
git_sync { repositories: [...] }, each with git_repo_resource_path, script_path and settings (include/exclude paths and types). Server-owned fields (webhook secrets, sync state, credentials) are never read nor written.
datatable { datatables: { <name>: { database: { resource_type, resource_path } } } }, both required: resource_type: postgresql with resource_path a Postgres resource's path, or instance, or external_instance (Enterprise only), with resource_path the name of a database a superadmin set up. A fork's entry can instead be { reference: { workspace_id, datatable } }, pointing at its parent's data table; keep it as is. main is the one scripts use by default. Role permissions are datatable_permissions.
datatable_permissions { <data table>: { default_role, roles: { <role>: [tenants] } } }: who may connect to each data table as which role. Tenants are u/<user>, g/<group>, f/<folder> or *; admin is always a role, and default_role: null means no default. A data table the value omits is no longer under roles. Only a data table on a cluster Windmill manages can be.
protection_rules { <rule name>: { rules: [...], bypass_groups: [...], bypass_users: [...] } }, rules among DisableDirectDeployment, DisableWorkspaceForking, RestrictDeployToDeployers, RestrictAnonymousAppDeployment, RestrictPublicRunSharing, RestrictGuestAppDeployment, RequireIsolatedForks. A rule the value omits is deleted. The dev workspace lock is not listed and cannot be set here.
ducklake { ducklakes: { <name>: { catalog, storage, ... } } }.
dbt_warehouses dbt warehouse connections.
default_app Path of the app shown as the workspace home.
default_scripts { order?, hidden?, default_script_content? } for the script language picker.
deploy_ui { include_path?, include_type? }: what the deploy-to-workspace UI offers.
operator_settings What operators see and do: page visibility flags (runs, schedules, resources, variables, assets, audit_logs, groups, folders, workers, triggers) and write rights (manage_schedules, manage_triggers, builder_flows, builder_apps). A write right the value omits keeps its stored value.
mute_critical_alerts Mute the workspace's critical alerts.
slack_team_id, slack_name Read only: set by connecting Slack on the settings page.
slack_command_script / teams_command_script Script or flow handling the Slack / Teams command.
slack_oauth_client_id / slack_oauth_client_secret The workspace's own Slack OAuth app. Clearing either removes both.
public_app_execution_limit_per_minute Rate limit for public apps, null for none.
guest_access_enabled, guest_jwt_public_key, guest_jwt_jwks_url Guest access to public apps and the key that signs guest JWTs.
add_admins_and_developers_to_forks Add the workspace's admins and developers to each fork.
color Workspace color, #rrggbb.

From the command line

wmill workspace get-settings prints the document (--encrypted for secrets encrypted with the workspace key, --json for JSON). wmill workspace apply-settings <file> applies a partial document from a YAML or JSON file: it shows the changes and asks before writing (--dry-run to only show them, -y to skip the question, --replace to clear what the file omits).

In a synced repository

With includeSettings: true in wmill.yaml, wmill sync pull writes the document to settings.yaml, secrets encrypted with the workspace key (plaintext only with plainSecrets), and wmill sync push applies it. Unlike a partial apply, a push treats the file as the whole document: a setting the file omits is cleared, except operator_settings, color, the auto-invite instance groups, and the keys ducklake, dbt_warehouses, deploy_ui, teams_command_script, public_app_execution_limit_per_minute, guest_access_enabled, guest_jwt_public_key, guest_jwt_jwks_url, error_handler_fallback_to_instance_alerts and add_admins_and_developers_to_forks, which are managed only when the file states them. datatable_permissions is pushed only with includeDatatablePermissions: true (or --include-datatable-permissions). A push ignores protection_rules: protection-rules.yaml and wmill protection-rules push sync them.