-
-
Notifications
You must be signed in to change notification settings - Fork 80.7k
Secret resolver does not inject file-source secrets into ElevenLabs TTS provider at runtime #89607
Copy link
Copy link
Open
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Description
Metadata
Metadata
Assignees
Labels
P2Normal backlog priority with limited blast radius.Normal backlog priority with limited blast radius.clawsweeper:linked-pr-openClawSweeper found an open linked pull request for this issue.ClawSweeper found an open linked pull request for this issue.clawsweeper:needs-security-reviewClawSweeper marked this issue as needing security-sensitive review.ClawSweeper marked this issue as needing security-sensitive review.clawsweeper:no-new-fix-prClawSweeper does not recommend queueing a new automated fix PR for this issue.ClawSweeper does not recommend queueing a new automated fix PR for this issue.clawsweeper:source-reproClawSweeper found a high-confidence source-level issue reproduction.ClawSweeper found a high-confidence source-level issue reproduction.impact:auth-providerAuth, provider routing, model choice, or SecretRef resolution may break.Auth, provider routing, model choice, or SecretRef resolution may break.impact:securitySecurity boundary, credential, authz, sandbox, or sensitive-data risk.Security boundary, credential, authz, sandbox, or sensitive-data risk.issue-rating: 🦞 diamond lobsterVery strong issue quality with high-confidence source-level or clear reproduction.Very strong issue quality with high-confidence source-level or clear reproduction.
Type
Fields
Priority
None yet
Summary
When an
apiKeyinmessages.tts.personas.<id>.providers.elevenlabsis configured as a SecretRef pointing to a file-source secret provider, the config validates correctly andopenclaw config getreturns a redacted ref object, but at runtime the elevenlabs plugin fails withelevenlabs: not configuredandopenclaw infer tts convertreturnsTTS conversion failed: elevenlabs: not configured.Inlining the apiKey as a literal string works fine. So the problem is specifically the SecretRef → runtime injection path for this plugin.
Reproduction
Both of these configurations validate but fail at runtime:
Variant A —
mode: "json"with JSON pointerWhere
secrets.jsoncontains{"elevenlabs_api_key": "sk_..."}.Variant B —
mode: "singleValue"withid: "value"Where
/Users/me/.openclaw/credentials/elevenlabs/api-keycontains a single line with the key (sk_...).Observed behavior
openclaw config validate→ passes.openclaw config get messages.tts.personas.my-persona.providers.elevenlabs.apiKey→ returns the ref object with all fields__OPENCLAW_REDACTED__.openclaw infer tts providers→ showselevenlabswithavailable: true, configured: true.openclaw infer tts status→ showselevenlabswithconfigured: false.openclaw infer tts convert --text "test" --output /tmp/x.mp3→Error: TTS conversion failed: elevenlabs: not configured.~/.openclaw/logs/gateway.err.logduring the failed convert.Expected behavior
The elevenlabs plugin should receive the resolved secret value at runtime and proceed with TTS synthesis identically to when the apiKey is inlined.
Workaround
Inline the apiKey as a literal string in
openclaw.json. Works, but defeats the purpose of the SecretRef surface for security.Environment
2026.5.7(eeef486)