Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
When no audio (resp. image-understanding) provider is configured, pnpm openclaw infer audio transcribe --file <path> and pnpm openclaw infer image describe --file <path> exit 1 with Error: No transcript returned for audio: <path> and Error: No description returned for image: <path>. The error blames the input file. Reproduces with a nonexistent file, a directory, an empty file, or a wrong-format text file pretending to be audio — every input shape gives the same path-blaming error. Sibling subcommand infer image generate correctly says Error: No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "comfy/workflow"... and points the operator at the missing config. The audio/image-describe paths should follow the same shape.
Steps to reproduce
- Fresh checkout of openclaw at v2026.4.26 (commit afd0304);
pnpm install && pnpm build on Node 22.22.2; gateway running locally.
- Confirm no audio/image-understanding provider is configured:
pnpm openclaw infer audio providers --json | head -3 shows every entry as "configured": false (none have credentials in this default install).
- Run
pnpm openclaw infer audio transcribe --file /tmp/totally-not-real.mp3. Observe Error: No transcript returned for audio: /tmp/totally-not-real.mp3 and exit 1.
- Repeat with:
--file /tmp (a directory), --file /tmp/empty.mp3 (touch'd empty file), --file /tmp/fake.mp3 (a text file). Same error every time, only the path in the message changes.
- Run
pnpm openclaw infer image describe --file /tmp/totally-not-real.png. Observe Error: No description returned for image: /tmp/totally-not-real.png and exit 1. Same shape.
- For comparison:
pnpm openclaw infer image generate --prompt "test". Observe Error: No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "comfy/workflow". If you want a specific provider, also configure that provider's auth/API key first (comfy: COMFY_API_KEY / COMFY_CLOUD_API_KEY; fal: FAL_KEY / FAL_API_KEY; google: GEMINI_API_KEY / GOOGLE_API_KEY). — clearly identifies the missing config and points at the fix.
Expected behavior
When no audio (resp. image-understanding) provider is configured, the CLI should emit a clear error that names the missing config and the next step, not a path-blaming message. The closest in-tree precedent is infer image generate, which on the same "no provider configured" condition emits:
Error: No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "comfy/workflow". If you want a specific provider, also configure that provider's auth/API key first ...
infer audio transcribe and infer image describe should follow that pattern — detect "no providers configured" upfront, emit a clear "no audio/image-understanding provider configured" error pointing at the relevant agents.defaults.* knob, and exit 1.
The current "No transcript/description returned for ...: " wording should be reserved for the case where a provider was actually called and returned an empty result — which is the case the closed issues #65394, #66506, #65076 patched. Today the same error string is overloaded across both failure modes; operators cannot tell from the message whether to debug their input file, their provider config, or the provider's response.
Actual behavior
$ pnpm openclaw infer audio transcribe --file /tmp/totally-not-real.mp3
Error: No transcript returned for audio: /tmp/totally-not-real.mp3
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer audio transcribe --file /tmp # directory
Error: No transcript returned for audio: /tmp
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer audio transcribe --file /tmp/empty.mp3 # empty
Error: No transcript returned for audio: /tmp/empty.mp3
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer audio transcribe --file /tmp/fake.mp3 # text file
Error: No transcript returned for audio: /tmp/fake.mp3
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer image describe --file /tmp/totally-not-real.png
Error: No description returned for image: /tmp/totally-not-real.png
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer image generate --prompt "test"
Error: No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "comfy/workflow". If you want a specific provider, also configure that provider's auth/API key first (comfy: COMFY_API_KEY / COMFY_CLOUD_API_KEY; fal: FAL_KEY / FAL_API_KEY; google: GEMINI_API_KEY / GOOGLE_API_KEY).
ELIFECYCLE Command failed with exit code 1.
OpenClaw version
2026.4.26
Operating system
Ubuntu 24.04.4 LTS (Linux 6.8.0-110-generic)
Install method
pnpm dev
Model
anthropic/claude-opus-4-7
Provider / routing chain
N/A
Additional provider/model setup details
- Default model: anthropic/claude-opus-4-7 (text inference works fine via Claude CLI OAuth).
- Audio providers: all 8 listed by
infer audio providers are configured: false (deepgram, elevenlabs, google, groq, mistral, openai, senseaudio, xai). No credentials in env, no ~/.openclaw/credentials/ entries for any of them.
- Image-understanding providers: same — all listed providers are
configured: false.
- No per-agent overrides; default agent
main; gateway mode=local.
Logs, screenshots, and evidence
=== Audio transcribe — error blames input file across every input shape ===
$ pnpm openclaw infer audio transcribe --file /tmp/totally-not-real.mp3
Error: No transcript returned for audio: /tmp/totally-not-real.mp3
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer audio transcribe --file /tmp # directory
Error: No transcript returned for audio: /tmp
$ touch /tmp/empty.mp3 && pnpm openclaw infer audio transcribe --file /tmp/empty.mp3
Error: No transcript returned for audio: /tmp/empty.mp3
$ echo "hello" > /tmp/fake.mp3 && pnpm openclaw infer audio transcribe --file /tmp/fake.mp3
Error: No transcript returned for audio: /tmp/fake.mp3
=== Confirmation that no provider is configured ===
$ pnpm openclaw infer audio providers --json | python3 -c "
import json, sys
for line in sys.stdin:
line=line.strip()
if not line.startswith('{'): continue
d = json.loads(line)
print(f\"{d['id']}: configured={d['configured']}\")
"
deepgram: configured=False
elevenlabs: configured=False
google: configured=False
groq: configured=False
mistral: configured=False
openai: configured=False
senseaudio: configured=False
xai: configured=False
=== Image describe — same shape ===
$ pnpm openclaw infer image describe --file /tmp/totally-not-real.png
Error: No description returned for image: /tmp/totally-not-real.png
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer image describe --file /tmp
Error: No description returned for image: /tmp
ELIFECYCLE Command failed with exit code 1.
=== In-tree counter-example: image generate gets it right ===
$ pnpm openclaw infer image generate --prompt "test"
Error: No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "comfy/workflow". If you want a specific provider, also configure that provider's auth/API key first (comfy: COMFY_API_KEY / COMFY_CLOUD_API_KEY; fal: FAL_KEY / FAL_API_KEY; google: GEMINI_API_KEY / GOOGLE_API_KEY).
ELIFECYCLE Command failed with exit code 1.
=== Cross-capability error-wording matrix (same "no provider configured" condition) ===
CAPABILITY ERROR WORDING VERDICT
infer image generate "No image-generation model configured. Set agents.defaults.imageGenerationModel..." Clear, actionable
infer web search "missing_brave_api_key" / "needs a Brave Search API key. Run openclaw configure..." Clear, actionable
infer web fetch "web.fetch is disabled or no provider is available." Clear, actionable
infer tts convert Per-provider list: "openai: not configured; elevenlabs: not configured; ..." Verbose but clear
infer audio transcribe "No transcript returned for audio: <path>" Misleading
infer image describe "No description returned for image: <path>" Misleading
Impact and severity
Affected users/systems/channels:
- Every operator running
infer audio transcribe or infer image describe without a configured provider for the relevant capability. Linux directly observed (Ubuntu 24.04 / Node 22.22.2 / pnpm 10.33.0); platform-agnostic code path so macOS/Windows are expected to reproduce, only Linux directly verified.
- New users following the docs to try out audio/image-understanding capabilities. The "No transcript returned" message sends them down the wrong debugging path (they check their audio file, re-encode, try a different format) instead of pointing at the missing provider config.
Severity:
- Misleading error wording. Not a crash, not a security issue, no data loss. The underlying behavior (refusing to call non-existent providers) is correct; only the error message is wrong.
- Trust-eroding: the operator sees an error that names their file and exits 1, naturally assumes the file is bad, and wastes time before discovering the real cause.
- Inconsistent with sibling capability subcommands.
image generate, web search, web fetch, tts convert all emit clear "no provider configured" errors. Two outliers (audio transcribe, image describe) misattribute to input.
Frequency:
- Always, deterministic. 100% reproduction across nonexistent files, directories, empty files, and wrong-format files when no audio/image-understanding provider is configured. Independent of model/provider/transport — the error happens before any provider call.
Consequence:
Additional information
Bug type
Behavior bug (incorrect output/state without crash)
Beta release blocker
No
Summary
When no audio (resp. image-understanding) provider is configured,
pnpm openclaw infer audio transcribe --file <path>andpnpm openclaw infer image describe --file <path>exit 1 withError: No transcript returned for audio: <path>andError: No description returned for image: <path>. The error blames the input file. Reproduces with a nonexistent file, a directory, an empty file, or a wrong-format text file pretending to be audio — every input shape gives the same path-blaming error. Sibling subcommandinfer image generatecorrectly saysError: No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "comfy/workflow"...and points the operator at the missing config. The audio/image-describe paths should follow the same shape.Steps to reproduce
pnpm install && pnpm buildon Node 22.22.2; gateway running locally.pnpm openclaw infer audio providers --json | head -3shows every entry as"configured": false(none have credentials in this default install).pnpm openclaw infer audio transcribe --file /tmp/totally-not-real.mp3. ObserveError: No transcript returned for audio: /tmp/totally-not-real.mp3and exit 1.--file /tmp(a directory),--file /tmp/empty.mp3(touch'd empty file),--file /tmp/fake.mp3(a text file). Same error every time, only the path in the message changes.pnpm openclaw infer image describe --file /tmp/totally-not-real.png. ObserveError: No description returned for image: /tmp/totally-not-real.pngand exit 1. Same shape.pnpm openclaw infer image generate --prompt "test". ObserveError: No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "comfy/workflow". If you want a specific provider, also configure that provider's auth/API key first (comfy: COMFY_API_KEY / COMFY_CLOUD_API_KEY; fal: FAL_KEY / FAL_API_KEY; google: GEMINI_API_KEY / GOOGLE_API_KEY).— clearly identifies the missing config and points at the fix.Expected behavior
When no audio (resp. image-understanding) provider is configured, the CLI should emit a clear error that names the missing config and the next step, not a path-blaming message. The closest in-tree precedent is
infer image generate, which on the same "no provider configured" condition emits:infer audio transcribeandinfer image describeshould follow that pattern — detect "no providers configured" upfront, emit a clear "no audio/image-understanding provider configured" error pointing at the relevantagents.defaults.*knob, and exit 1.The current "No transcript/description returned for ...: " wording should be reserved for the case where a provider was actually called and returned an empty result — which is the case the closed issues #65394, #66506, #65076 patched. Today the same error string is overloaded across both failure modes; operators cannot tell from the message whether to debug their input file, their provider config, or the provider's response.
Actual behavior
$ pnpm openclaw infer audio transcribe --file /tmp/totally-not-real.mp3
Error: No transcript returned for audio: /tmp/totally-not-real.mp3
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer audio transcribe --file /tmp # directory
Error: No transcript returned for audio: /tmp
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer audio transcribe --file /tmp/empty.mp3 # empty
Error: No transcript returned for audio: /tmp/empty.mp3
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer audio transcribe --file /tmp/fake.mp3 # text file
Error: No transcript returned for audio: /tmp/fake.mp3
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer image describe --file /tmp/totally-not-real.png
Error: No description returned for image: /tmp/totally-not-real.png
ELIFECYCLE Command failed with exit code 1.
$ pnpm openclaw infer image generate --prompt "test"
Error: No image-generation model configured. Set agents.defaults.imageGenerationModel.primary to a provider/model like "comfy/workflow". If you want a specific provider, also configure that provider's auth/API key first (comfy: COMFY_API_KEY / COMFY_CLOUD_API_KEY; fal: FAL_KEY / FAL_API_KEY; google: GEMINI_API_KEY / GOOGLE_API_KEY).
ELIFECYCLE Command failed with exit code 1.
OpenClaw version
2026.4.26
Operating system
Ubuntu 24.04.4 LTS (Linux 6.8.0-110-generic)
Install method
pnpm dev
Model
anthropic/claude-opus-4-7
Provider / routing chain
N/A
Additional provider/model setup details
infer audio providersareconfigured: false(deepgram, elevenlabs, google, groq, mistral, openai, senseaudio, xai). No credentials in env, no~/.openclaw/credentials/entries for any of them.configured: false.main; gatewaymode=local.Logs, screenshots, and evidence
Impact and severity
Affected users/systems/channels:
infer audio transcribeorinfer image describewithout a configured provider for the relevant capability. Linux directly observed (Ubuntu 24.04 / Node 22.22.2 / pnpm 10.33.0); platform-agnostic code path so macOS/Windows are expected to reproduce, only Linux directly verified.Severity:
image generate,web search,web fetch,tts convertall emit clear "no provider configured" errors. Two outliers (audio transcribe,image describe) misattribute to input.Frequency:
Consequence:
infersubcommands erodes operator trust in error messages generally.Additional information
Regression status: not classified as a Regression. Last-known-good not directly observed; no bisect performed.
Likely fix locus: the action handlers for
infer audio transcribeandinfer image describe(commander definitions under src/cli/cli-infer/ or wherever the parser lives in this build), or the upstream capability dispatcher they share. Detect "no provider configured for this capability" before attempting the call (the providers list is already resolved —infer audio providersandinfer image providerscorrectly enumerateconfigured: false), and emit animage generate-shaped error that names the missing config and the env vars to set. The discovery logic exists; only the wording at the dispatch-failure boundary needs to change.Suggested regression test: a unit test pair on
infer audio transcribeandinfer image describeactions that mock the providers list to return all-configured: false, invoke the action with any --file value, and assert the error message names "no provider configured" (not "no transcript/description returned for ..."). Pair with a parity test that confirms the existing "no transcript returned" message still appears when the provider is configured but returns an empty body — that's the original failure mode patched in [Bug]: audio transcribe returns "No transcript returned" for Deepgram/Groq/OpenAI on valid local files #65394 / [Bug]: OpenAI audio transcription returns "No transcript returned" on 2026.4.9 despite provider success #66506 / [Bug]: Audio understanding: OpenAI provider returns no transcript and no surfaced error on valid OGG/Opus #65076.Related findings from the same session (linkable but not bundled):
infer model run --local --prompt ""reaches the provider;--gatewaycorrectly rejects it (Claude shows "No text output returned"; DeepSeek silently bills) #73185 (the empty--promptcase forinfer model run). Same error class, different surface.infer tts convert --text ""shows yet another instance: openclaw doesn't validate the empty text upfront; the configured Microsoft TTS provider rejects with "Microsoft TTS text cannot be empty"; non-Microsoft providers are silently ineligible. Per-provider, not per-CLI, validation. Could be filed as part of the systemic series.Dedupe checked against the openclaw issue corpus on 2026-04-28: no existing open or closed issue matches this specific failure mode. Closed issues [Bug]: audio transcribe returns "No transcript returned" for Deepgram/Groq/OpenAI on valid local files #65394, [Bug]: OpenAI audio transcription returns "No transcript returned" on 2026.4.9 despite provider success #66506, [Bug]: Audio understanding: OpenAI provider returns no transcript and no surfaced error on valid OGG/Opus #65076 all addressed the "No transcript returned" error appearing on valid audio inputs with a configured provider — different failure mode. Feature: infer model run — multimodal support (--file for vision) #63700 (open) is a feature request to add
--filemultimodal support toinfer model run— unrelated.Not exercised in this repro: behavior with at least one audio/image-understanding provider configured (we have no Deepgram/Groq/OpenAI/Google audio creds in this environment); behavior under
--gatewaytransport (the bug is in the error-wording path which is shared, but not directly verified); concurrent invocations.