ZeroClaw
ZeroClaw removes speech API keys from request URLs
ZeroClaw proposes moving Google speech-to-text credentials out of URLs while a related report says exact proxy selectors reject supported transcription services. Quickstart default work shows the channel surface still needs one source of configuration truth.
zeroclaw-labs/zeroclaw PR #10107 is the inspected primary source: “fix(channels): keep Google STT API keys out of URLs.” The related records below were inspected as supporting context rather than independent confirmation.
The facts
- zeroclaw-labs/zeroclaw PR #10107 was created 2026-08-19T00:00:22Z and was open at inspection; its title is “fix(channels): keep Google STT API keys out of URLs.” - zeroclaw-labs/zeroclaw issue #10106 was created 2026-08-18T23:56:11Z and was open at inspection; its title is “[Bug]: Exact proxy selectors reject supported transcription services.” - zeroclaw-labs/zeroclaw PR #10081 was created 2026-08-18T15:33:35Z and was open at inspection; its title is “fix(web): show channel descriptor defaults in Quickstart.” - The repository reported 32612 stars, 728 open issues, default branch master, and last push 2026-08-19T00:07:48Z. - The latest tagged-release baseline checked was v0.8.4 published 2026-08-02T21:00:00Z.
What changed
zeroclaw-labs/zeroclaw PR #10107 reports: Summary **Base branch:** master **What changed and why:** Removes Google Speech-to-Text API keys from recognition request URLs so URL-oriented proxy logs, diagnostics, and monitoring records do not capture the credential. Sends the key through Google's x-goog-api-key header and marks the header value sensitive. Rejects malformed header values with credential-free error text and adds request-level regressions for the security properties. **Scope boundary:** This PR does not change credential storage, configuration, provider selection, audio encoding, request payloads, timeouts, response parsing, or other transcription providers. **Blast radius:** Google Speech-to-Text v1 recognition requests authenticated with an API key. Existing runtime proxy selection and all non-Google transcription paths are unchanged. **Linked issue(s):** Related #9973. The adjacent exact proxy-selector mismatch remains separate in #10106. **Labels:** bug, channel, domain:security, follow-up, priority:p1, risk:high, size:S, distinguished contributor What this does, simply Google Speech-to-Text previously received its API key inside the request URL. URLs are commonly copied into proxy logs, diagnostics, and monitoring records, so the secret could travel farther than the request itself. This PR keeps the endpoint credential-free and sends the key through Google's dedicated authentication header instead. The header is marked sensitive for diagnostic formatting, and malformed values fail before dispatch without being repeated in the error. The change stays inside Google STT request construction because storage, provider routing, payloads, and response handling are not the source
zeroclaw-labs/zeroclaw issue #10106 reports: Affected component config/onboarding Severity S2 - degraded behavior Current behavior ZeroClaw's runtime creates proxy-aware clients with the service keys transcription.groq, transcription.openai, transcription.deepgram, transcription.assemblyai, transcription.google, and transcription.local_whisper. Config validation accepts only transcription.groq as an exact proxy.services selector. The other runtime keys are rejected as unsupported even though transcription.* matches them at runtime. Expected behavior Every transcription service key used by build_runtime_proxy_client should be accepted as an exact proxy.services selector. Operators should be able to proxy one transcription backend without selecting every transcription provider through transcription.*. Steps to reproduce Impact Affected users: operators who need per-provider proxy routing for a transcription backend other than Groq. Frequency: always when an omitted exact selector is configured. Consequence: operators must use the broader transcription.* selector, which proxies all transcription providers rather than only the intended backend. Logs / stack traces ZeroClaw version 0db7d999a490d950ce1cb89a332a2a4aa76c3aa8 Rust version _No response_ Operating system All platforms; this is deterministic configuration validation. Regression? No, first-time setup Pre-flight checks [X] I reproduced this on the latest master branch or latest release. [X] I redacted secrets, tokens, and personal data from all submitted content. Related work The exact-selector allowlist and transcription.* wildcard were introduced by #9137. This issue is limited to aligning exact validation with the transcription runtime service keys; it does not change proxy transport, provider authentication, or wildcard semantics. Acceptance criteria
zeroclaw-labs/zeroclaw PR #10081 reports: Summary **Base branch:** master (all contributions) **What changed and why:** Seed the Web Quickstart channel form from each descriptor's explicit default value. Keep descriptors without defaults empty, including secret fields, so the backend remains authoritative. Mark descriptor-declared required fields with the existing warning badge and native accessibility metadata. Preserve edited channel fields when switching from **Create new** to **Use existing** and back. Add focused regression coverage for descriptor defaults, no-default descriptors, and the mode round-trip. **Scope boundary:** This changes only the Web Quickstart channel form; provider defaults, backend descriptor generation, CLI behavior, and TUI behavior are unchanged. **Blast radius:** Web Quickstart users adding a fresh channel; existing-channel selection and other configuration surfaces are unaffected. **Linked issue(s):** Fixes #9760 **Labels:** bug, priority:p3, web, quickstart, risk:low, size:XS, needs-author-action Testing How you can test (when useful) **Reviewer testing requested?** Yes **Interface(s) exercised:** web surface, Web Quickstart channel form **Setup / preconditions:** Run the gateway with the Web dashboard available and open Quickstart; no external channel credentials are needed to inspect the descriptor fields. **Steps to run:** Select **Add channel**, choose **Webhook**, and inspect the generated fields. Repeat the same steps on master for the before comparison. **Expected on this branch (after):** The Webhook port field is initialized to 8090; required descriptor fields show the existing warning-style Required badge and carry required accessibility metadata;
Why it matters
Credentials in URLs leak into logs and intermediaries; brittle proxy matching then tempts operators to bypass the safe path. Documentation defaults must match runtime behavior. The operator test is whether the system remains bounded and its receipts still describe the action after failure, retry or restart.
Current
The primary record was open when captured on 2026-08-19. The tagged-release baseline was v0.8.4 published 2026-08-02T21:00:00Z. Repository metadata, full source bodies, current pull requests and issues, releases, Google News, Hacker News, Lobsters, Metamesh and the rendered ClawCharts row were inspected. ClawCharts selected the subject; it did not prove the claim.
Evidence
The primary URL is https://github.com/zeroclaw-labs/zeroclaw/pull/10107. Supporting records are https://github.com/zeroclaw-labs/zeroclaw/issues/10106 and https://github.com/zeroclaw-labs/zeroclaw/pull/10081. Source bodies, timestamps and states are preserved in the daily evidence bundle. Test counts and reproductions remain attributed to their authors unless identified as independently rerun.
Source boundary
Open work is described as open, closed work as closed, and operator reports as reports. A pull request is evidence of proposed or reviewed direction, not proof of a shipped release. Search residue, package mirrors and historically published source spines were excluded.
Operator take
Send speech credentials in headers, define proxy support by capability rather than exact names, and generate Quickstart defaults from runtime descriptors. Preserve a before-state receipt, make the smallest reversible change, and verify the original failure independently.
Caveat
Public project records are mutable. Status, scope and evidence can change after publication. This brief records the inspected state and does not authorize changes to a reader’s deployment.
Source inspected; source state, environment and release boundary remain explicit.