Summary
I wanted to use the talk mode again yesterday on MacOS and noticed that it was not using my Elevenlabs voice. Investigation shows that instead of the actually configured Elevenlabs API key, the POST request to Elevenlabs contains the __OPENCLAW_REDACTED__ redaction sentinel eventhough the configuration contains the actual API key.
Steps to reproduce
- Configure talk with elevenlabs credentials and a distinct voice
- Start talk mode from MacOS app
- Talk and wait for a reply.
- Talk mode falls back to fallback voice
Expected behavior
Normally the selected Elevenlabs voice should be used.
Actual behavior
The voice I hear is some fallback voice.
Environment
- Clawdbot version: 2026.2.9
- OS: Mac OS Tahoe 26.2
- Install method (pnpm/npx/docker/etc): Install script (did a fresh install yesterday to exclude any other issues)
Logs or screenshots
openclaw --version
2026.2.9
openclaw gateway status
🦞 OpenClaw 2026.2.9 (33c75cb) — Chat automation for people who peaked at IRC.
│
◇
Service: LaunchAgent (loaded)
File logs: /tmp/openclaw/openclaw-2026-02-12.log
Command: /opt/homebrew/bin/node /opt/homebrew/lib/node_modules/openclaw/dist/index.js gateway --port 18789
Service file: ~/Library/LaunchAgents/ai.openclaw.gateway.plist
Service env: OPENCLAW_GATEWAY_PORT=18789
Config (cli): ~/.openclaw/openclaw.json
Config (service): ~/.openclaw/openclaw.json
Gateway: bind=loopback (127.0.0.1), port=18789 (service args)
Probe target: ws://127.0.0.1:18789
Dashboard: http://127.0.0.1:18789/
Probe note: Loopback-only gateway; only local clients can connect.
Runtime: running (pid 20661, state active)
RPC probe: ok
Listening: 127.0.0.1:18789
I intercepted the POST request to Elevenlabs via proxyman. This is the acutal request - it contains the sentinel and not the API key for Elevenlabs:
POST /v1/text-to-speech/gGjaVIGkCSfKUIBYtNT2/stream?output_format=mp3_44100 HTTP/1.1
Host: api.elevenlabs.io
Content-Type: application/json
Connection: keep-alive
Accept: audio/mpeg
xi-api-key: __OPENCLAW_REDACTED__
Accept-Language: de-DE,de;q=0.9
Content-Length: 123
Accept-Encoding: gzip, deflate, br
User-Agent: OpenClaw/9194 CFNetwork/3860.300.31 Darwin/25.2.0
{"model_id":"eleven_v3","text":"Alles klar, Test läuft durch! Was möchtest du ausprobieren?","output_format":"mp3_44100"}
My ~/.openclaw/openclaw.json contains the following section for the configuration of talk mode:
...
"talk": {
"voiceId": "JiW03c2Gt43XNUQAumRP",
"voiceAliases": {
"Helmut": "JiW03c2Gt43XNUQAumRP",
"Jaro": "mm6KzSKUbzZOVvgW18zR",
"Marc": "gGjaVIGkCSfKUIBYtNT2",
"Stephan": "dnSxHmjp9jQffMRfRzwo"
},
"modelId": "eleven_v3",
"apiKey": "sk_AND_HERE_IS_MY_ACTUAL_API_KEY",
"interruptOnSpeech": true
},
...
-
Running rg "__OPENCLAW_REDACTED__" ~/.openclaw*/openclaw.json locally results in no output.
-
Running openclaw config get talk.apiKey on my gateway host results in the acutal Elevenlabs API key being printed to the terminal. No sentinel there.
Summary
I wanted to use the talk mode again yesterday on MacOS and noticed that it was not using my Elevenlabs voice. Investigation shows that instead of the actually configured Elevenlabs API key, the POST request to Elevenlabs contains the
__OPENCLAW_REDACTED__redaction sentinel eventhough the configuration contains the actual API key.Steps to reproduce
Expected behavior
Normally the selected Elevenlabs voice should be used.
Actual behavior
The voice I hear is some fallback voice.
Environment
Logs or screenshots
I intercepted the POST request to Elevenlabs via proxyman. This is the acutal request - it contains the sentinel and not the API key for Elevenlabs:
My ~/.openclaw/openclaw.json contains the following section for the configuration of talk mode:
Running
rg "__OPENCLAW_REDACTED__" ~/.openclaw*/openclaw.jsonlocally results in no output.Running
openclaw config get talk.apiKeyon my gateway host results in the acutal Elevenlabs API key being printed to the terminal. No sentinel there.