openclaw - 💡(How to fix) Fix Groq media understanding provider dropped from registry after first message — voice transcription works once then fails [1 participants]

Official PRs (…)
ON THIS PAGE

Recommended Tools

×6

Utilities matched from this issue’s tags and category — try them while you read without losing context.

GitHub issue graph ai analysis

Paste a GitHub issue URL. We fetch that issue, discover linked issues from bodies/comments/timeline, collect linked pull requests, and produce a structured English report.

The report is written in English Markdown for sharing and archival.

Helpful · Quick feedback

Loading…
GitHub stats
openclaw/openclaw#60518Fetched 2026-04-08 02:50:05
View on GitHub
Comments
0
Participants
1
Timeline
0
Reactions
0
Author
Participants

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).

Error Message

Error: Media provider not available: groq

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".

Fix Action

Fix / Workaround

With console.error patches added to apply.ts and runner.ts:

Code Example

Error: Media provider not available: groq

---

{
  "tools": {
    "media": {
      "audio": {
        "enabled": true,
        "models": [{ "provider": "groq", "model": "whisper-large-v3-turbo" }]
      }
    }
  }
}

---

[MEDIA-BUG] hasInboundMedia: true MediaPaths: 1 MediaTypes: 1
[MEDIA-BUG] entries for audio: [{"provider":"groq","model":"whisper-large-v3-turbo"}]

---

[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)
RAW_BUFFERClick to expand / collapse

Description

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

  1. Configure Groq audio transcription in openclaw.json:
{
  "tools": {
    "media": {
      "audio": {
        "enabled": true,
        "models": [{ "provider": "groq", "model": "whisper-large-v3-turbo" }]
      }
    }
  }
}
  1. Restart the gateway
  2. Send a voice message via Telegram DM → transcription works
  3. Send a second voice message → transcription silently fails
  4. All subsequent voice messages also fail
  5. 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:

First voice message (works):

[MEDIA-BUG] hasInboundMedia: true MediaPaths: 1 MediaTypes: 1
[MEDIA-BUG] entries for audio: [{"provider":"groq","model":"whisper-large-v3-turbo"}]

(No error — transcription succeeds)

Second voice message (fails):

[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 #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

Environment

  • OpenClaw 2026.4.2
  • Windows 11
  • Node.js v25.8.1
  • Provider: Groq (whisper-large-v3-turbo)
  • Channel: Telegram DM

Related Issues

  • #60421 — Media understanding errors silently swallowed (logging gap)
  • #60422 — No retry for transient errors
  • #60423 — Missing try/catch wrapper in reply pipeline

extent analysis

TL;DR

The most likely fix is to prevent the hot-reload/plugin re-registration after the first message is processed, ensuring the Groq media understanding provider remains available.

Guidance

  • Verify that the ensureAgentWorkspace function is triggering the hot-reload/plugin re-registration, causing the provider to become unavailable.
  • Check the plugin registry implementation to ensure it correctly handles the Groq media understanding provider during re-registration.
  • Consider adding a try/catch wrapper in the reply pipeline to handle transient errors, as mentioned in related issue #60423.
  • Temporarily enable verbose logging to monitor the provider registry and media understanding errors.

Example

No code snippet is provided, as the issue requires a deeper understanding of the plugin registry and hot-reload mechanism.

Notes

The fix may involve modifying the plugin registry implementation or the hot-reload mechanism to prevent the Groq media understanding provider from becoming unavailable after the first message is processed.

Recommendation

Apply a workaround to prevent the hot-reload/plugin re-registration after the first message is processed, ensuring the Groq media understanding provider remains available, until a permanent fix can be implemented.

Vote matrix · Quick signals

Works
Did the solution work? Tap to confirm.
Easy Fix
Was it a quick fix?
Time Saver
Did it save you time?
Blocking
Was it severely blocking?
Common Issue
Are others likely hitting this too?
Flaky / Intermittent
Is it intermittent?
Verified / Reproducible
Can you reproduce it reliably?
Loading…

Still need to ship something?

×6

Another batch ranked right after the header list — different links, same matching logic.

Back to top recommendations

TRENDING