You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Voice message transcription (Groq Whisper) works exactly once after gateway restart, then silently fails for all subsequent voice messages with:
Error: Media provider not available: groq
The error is caught and silently swallowed by runAttachmentEntries in runner.ts, logged only via logVerbose() which is a no-op in the worker process (see #60421).
Reproduction Steps
Configure Groq audio transcription in openclaw.json:
Send a voice message via Telegram DM → transcription works ✅
Send a second voice message → transcription silently fails ❌
All subsequent voice messages also fail
Restart gateway → cycle repeats from step 3
Root Cause
The Groq media understanding provider is registered in the plugin registry on startup, but becomes unavailable after the first message is processed. The provider entry is resolved correctly (resolveAutoEntries returns [{provider: "groq", model: "whisper-large-v3-turbo"}]), but getMediaUnderstandingProvider("groq", providerRegistry) returns null on the second call.
Likely cause: The first message triggers ensureAgentWorkspace which writes bootstrap files. The gateway file watcher detects the change and triggers a hot-reload/plugin re-registration. The rebuilt plugin registry does not include the bundled Groq media understanding provider, causing runProviderEntry to throw "Media provider not available: groq".
Debug Evidence
With console.error patches added to apply.ts and runner.ts:
[MEDIA-BUG] hasInboundMedia: true MediaPaths: 1 MediaTypes: 1
[MEDIA-BUG] entries for audio: [{"provider":"groq","model":"whisper-large-v3-turbo"}]
[MEDIA-BUG] attachment entry error: audio Error: Media provider not available: groq
at runProviderEntry (runner.ts)
at runAttachmentEntries (runner.ts)
at runCapability (runner.ts)
Key observation: hasInboundMedia is true and the correct provider is selected for BOTH messages. But on the second call, the provider object cannot be found in the runtime registry.
Additional Context
The error is completely invisible at default log level because all media understanding errors are logged via logVerbose(), which requires shouldLogVerbose() = true. In the gateway worker process, isVerbose() is always false (setVerbose not called) and isFileLogLevelEnabled("debug") is false (level math: 4 <= 3 → false). See Audio/image/video transcription failures are silently swallowed unless debug logging is enabled #60421.
The Groq API works perfectly when called directly via curl
Audio files are downloaded successfully for all messages
resolveAutoEntries correctly identifies Groq as the provider every time — only the provider registry lookup fails
Description
Voice message transcription (Groq Whisper) works exactly once after gateway restart, then silently fails for all subsequent voice messages with:
The error is caught and silently swallowed by
runAttachmentEntriesinrunner.ts, logged only vialogVerbose()which is a no-op in the worker process (see #60421).Reproduction Steps
openclaw.json:{ "tools": { "media": { "audio": { "enabled": true, "models": [{ "provider": "groq", "model": "whisper-large-v3-turbo" }] } } } }Root Cause
The Groq media understanding provider is registered in the plugin registry on startup, but becomes unavailable after the first message is processed. The provider entry is resolved correctly (
resolveAutoEntriesreturns[{provider: "groq", model: "whisper-large-v3-turbo"}]), butgetMediaUnderstandingProvider("groq", providerRegistry)returns null on the second call.Likely cause: The first message triggers
ensureAgentWorkspacewhich writes bootstrap files. The gateway file watcher detects the change and triggers a hot-reload/plugin re-registration. The rebuilt plugin registry does not include the bundled Groq media understanding provider, causingrunProviderEntryto throw"Media provider not available: groq".Debug Evidence
With
console.errorpatches added toapply.tsandrunner.ts:First voice message (works):
(No error — transcription succeeds)
Second voice message (fails):
Key observation:
hasInboundMediais true and the correct provider is selected for BOTH messages. But on the second call, the provider object cannot be found in the runtime registry.Additional Context
logVerbose(), which requiresshouldLogVerbose() = true. In the gateway worker process,isVerbose()is always false (setVerbose not called) andisFileLogLevelEnabled("debug")is false (level math:4 <= 3 → false). See Audio/image/video transcription failures are silently swallowed unless debug logging is enabled #60421.resolveAutoEntriescorrectly identifies Groq as the provider every time — only the provider registry lookup failsEnvironment
Related Issues