Skip to content

fix: Enable external secrets multi-connection to vault #26189

Merged
ireneea merged 4 commits intomasterfrom
ligo-280-multi-connections-per-vault-not-available-in-ui
Feb 24, 2026
Merged

fix: Enable external secrets multi-connection to vault #26189
ireneea merged 4 commits intomasterfrom
ligo-280-multi-connections-per-vault-not-available-in-ui

Conversation

@ireneea
Copy link
Contributor

@ireneea ireneea commented Feb 24, 2026

Summary

Replaces useEnvFeatureFlag checks (EXTERNAL_SECRETS_FOR_PROJECTS, EXTERNAL_SECRETS_MULTIPLE_CONNECTIONS) with backend-driven module settings exposed via settingsStore.moduleSettings['external-secrets'].

How to test

env vars

  • N8N_ENV_FEAT_EXTERNAL_SECRETS_FOR_PROJECTS
  • N8N_ENV_FEAT_EXTERNAL_SECRETS_MULTIPLE_CONNECTIONS

Without env vars

  1. Start n8n without any of the environment variable listed above set
  2. Check that multi-connection is enabled by default
  • The new external external settings page should be displayed by default
  • You should be able to create a new connection
  • You should be able to use connection secrets in credentials

With N8N_ENV_FEAT_EXTERNAL_SECRETS_MULTIPLE_CONNECTIONS set to false

  1. Start n8n with N8N_ENV_FEAT_EXTERNAL_SECRETS_MULTIPLE_CONNECTIONS set to false
  2. Check that multi-connection is disabled
  • You should see the old external settings page (with the five static providers and the "set up" button)
  • You should still be able to use secrets in credentials

With N8N_ENV_FEAT_EXTERNAL_SECRETS_FOR_PROJECTS set to true

  1. Start n8n with N8N_ENV_FEAT_EXTERNAL_SECRETS_FOR_PROJECTS set to false
  2. Check that project-scope feature is enabled
  • You should be able to share external secrets with project and see the external secrets section in the project settings tab

Related Linear tickets, Github issues, and Community forum posts

https://linear.app/n8n/issue/LIGO-280

Review / Merge checklist

  • PR title and summary are descriptive. (conventions)
  • Docs updated or follow-up ticket created.
  • Tests included.
  • PR Labeled with release/backport (if the PR is an urgent fix that needs to be backported)

@codecov
Copy link

codecov bot commented Feb 24, 2026

@ireneea ireneea changed the title refactor(editor): Replace env feature flags with module settings for external secrets (no-changelog) fix: Enable external secrets multi-connection to vault Feb 24, 2026
@codecov
Copy link

codecov bot commented Feb 24, 2026

Bundle Report

Changes will decrease total bundle size by 2.35kB (-0.01%) ⬇️. This is within the configured threshold ✅

Detailed changes
Bundle name Size Change
editor-ui-esm 42.4MB -2.35kB (-0.01%) ⬇️

Affected Assets, Files, and Routes:

view changes for bundle: editor-ui-esm

Assets Changed:

Asset Name Size Change Total Size Change (%)
assets/index-*.js -93 bytes 1.14MB -0.01%
assets/RunData-*.js -19 bytes 1.06MB -0.0%
assets/users.store-*.js -1.07kB 1.05MB -0.1%
assets/WorkflowsView-*.js -42 bytes 195.92kB -0.02%
assets/NodeView-*.js -42 bytes 145.83kB -0.03%
assets/router-*.js -75 bytes 104.4kB -0.07%
assets/WorkflowLayout-*.js -42 bytes 87.81kB -0.05%
assets/ProjectSettings-*.js -65 bytes 71.36kB -0.09%
assets/FixedCollectionParameter-*.js -42 bytes 70.87kB -0.06%
assets/SettingsMCPView-*.js -42 bytes 47.43kB -0.09%
assets/NodeDetailsView-*.js -42 bytes 43.78kB -0.1%
assets/NodeDetailsViewV2-*.js -42 bytes 39.19kB -0.11%
assets/CredentialsView-*.js -42 bytes 24.47kB -0.17%
assets/SettingsSecretsProviders.ee-*.js -95 bytes 23.08kB -0.41%
assets/ToolsManagerModal-*.js -42 bytes 20.36kB -0.21%
assets/MCPConnectWorkflowsModal-*.js -42 bytes 11.29kB -0.37%
assets/SettingsExternalSecrets-*.js -42 bytes 10.94kB -0.38%
assets/ToolSettingsModal-*.js -42 bytes 5.68kB -0.73%
assets/externalSecrets.ee.store-*.js -55 bytes 5.54kB -0.98%
assets/DemoDiffView-*.js -42 bytes 5.32kB -0.78%
assets/DemoLayout-*.js -42 bytes 3.73kB -1.11%
assets/CollectionParameter-*.js -42 bytes 1.74kB -2.36%
assets/useDynamicCredentials-*.js 610 bytes 1.12kB 120.55% ⚠️
assets/useEnvFeatureFlag-*.js (Deleted) -858 bytes 0 bytes -100.0% 🗑️

Files in assets/index-*.js:

  • ./src/features/integrations/secretsProviders.ee/components/SecretsProviderConnectionModal.ee.vue → Total Size: 448 bytes

  • ./src/features/integrations/secretsProviders.ee/composables/useConnectionModal.ee.ts → Total Size: 12.48kB

Files in assets/RunData-*.js:

  • ./src/features/shared/editors/plugins/codemirror/completions/datatype.completions.ts → Total Size: 34.01kB

Files in assets/router-*.js:

  • ./src/app/router.ts → Total Size: 24.19kB

Files in assets/ProjectSettings-*.js:

  • ./src/features/collaboration/projects/components/ProjectExternalSecrets.vue → Total Size: 392 bytes

Files in assets/SettingsSecretsProviders.ee-*.js:

  • ./src/features/integrations/secretsProviders.ee/components/SecretsProviderConnectionCard.ee.vue → Total Size: 442 bytes

Files in assets/externalSecrets.ee.store-*.js:

  • ./src/features/integrations/externalSecrets.ee/externalSecrets.ee.store.ts → Total Size: 5.66kB

@n8n-assistant n8n-assistant bot added core Enhancement outside /nodes-base and /editor-ui n8n team Authored by the n8n team labels Feb 24, 2026
const isFeatureEnabled = computed(() =>
envFeatureFlag.check.value('EXTERNAL_SECRETS_FOR_PROJECTS'),
const isFeatureEnabled = computed(
() => settingsStore.moduleSettings['external-secrets']?.forProjects ?? false,
Copy link
Contributor

@konstantintieber konstantintieber Feb 24, 2026

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Do you know how I would change these moduleSettings on a cloud instance once I ssh into it?
Asking since I know how to do this with an env var but not with moduleSettings.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah nevermind, I see you're wiring up the env vars with module settings in packages/cli/src/modules/external-secrets.ee/external-secrets.module.ts -> settings()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Module settings are run time logic based so you can't directly affect their values.

In this case the value is based on our backend logic which is

  • if no env var -> return true
  • if there is an env var -> use the env var value

So you could still set the env var to inderectly affect the module setting value

@ireneea ireneea marked this pull request as ready for review February 24, 2026 14:22
Copy link
Contributor

@konstantintieber konstantintieber left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Learned something new about our backend today. Thx for migrating from pure env vars to moduleSettings!
Really handy pattern.

@ireneea ireneea enabled auto-merge February 24, 2026 14:31
@ireneea ireneea added this pull request to the merge queue Feb 24, 2026
Merged via the queue into master with commit fc5c842 Feb 24, 2026
45 checks passed
@ireneea ireneea deleted the ligo-280-multi-connections-per-vault-not-available-in-ui branch February 24, 2026 15:00
@konstantintieber konstantintieber added the release/backport Pull request is a backport or needs to be backported. label Feb 24, 2026
@n8n-assistant n8n-assistant bot mentioned this pull request Feb 25, 2026
@n8n-assistant n8n-assistant bot mentioned this pull request Feb 27, 2026
@n8n-assistant
Copy link
Contributor

n8n-assistant bot commented Feb 27, 2026

Got released with n8n@2.10.2

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Backport to Beta core Enhancement outside /nodes-base and /editor-ui n8n team Authored by the n8n team release/backport Pull request is a backport or needs to be backported. Released

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants