Significant-Gravitas/AutoGPT · error · Error
Transcription failed
Error message
Transcription failed
What it means
HTTP 403 from POST /blocks/{block_id}/execute when the block is registered but flagged disabled. Disabled blocks are known to the registry but barred from execution — usually pending fixes, policy reasons, or feature flags. Distinct from 404: the block exists; it is intentionally blocked.
Source
Thrown at autogpt_platform/frontend/src/app/(platform)/copilot/components/ChatInput/useVoiceRecording.ts:109
setIsTranscribing(true);
setError(null);
try {
const formData = new FormData();
formData.append("audio", audioBlob);
const draft = valueRef.current.trim();
if (isBrainDumpEnabledRef.current && draft) {
formData.append("context", draft);
}
const response = await fetch("/api/transcribe", {
method: "POST",
body: formData,
});
if (!response.ok) {
const data = await response.json().catch(() => ({}));
throw new Error(data.error || "Transcription failed");
}
const data = await response.json();
if (data.text) {
handleTranscription(data.text);
}
} catch (err) {
const message =
err instanceof Error ? err.message : "Transcription failed";
setError(message);
console.error("Transcription error:", err);
} finally {
setIsTranscribing(false);
}
},
[handleTranscription, inputId],
);
View on GitHub (pinned to 9c8bb5550f)
Solutions
- Filter the block palette / execution path on the block's disabled flag from GET /blocks so disabled blocks are not callable.
- Refresh block metadata after deployment and honor the disabled state in the UI.
- If the block should be enabled, check its registration flags and server config, then redeploy.
Example fix
// before
await api.post(`/blocks/${blockId}/execute`, data);
// after
const block = (await api.get('/blocks')).find(b => b.id === blockId);
if (block?.disabled) throw new Error('Block is disabled');
await api.post(`/blocks/${blockId}/execute`, data); Defensive patterns
Strategy: validation
Validate before calling
const block = (await api.get('/blocks')).find(b => b.id === blockId);
if (block?.disabled) throw new Error('Block is disabled'); Type guard
const isExecutableBlock = (b: Block | undefined): b is Block => !!b && !b.disabled;
Try / catch
const resp = await api.post(`/blocks/${blockId}/execute`, data);
if (resp.status === 403) { /* surface 'disabled' message, hide block */ } Prevention
- Honor the disabled flag from GET /blocks in the UI
- Refresh block metadata after deployments
When it happens
Trigger: Calling execute on a block whose class sets disabled=True (or that was disabled via config) — e.g. a block deactivated in the current deployment while still visible to the client.
Common situations: Platform deployment disabled a problematic block; frontend still lists it from stale cache; version skew where a newly disabled block still appears in an older client's palette.
Related errors
- Block #{block_id} is disabled.
- Copy failed: ${res.status}
- Block #{block_id} not found.
- User not found.
- str(e)
AI-assisted analysis of Significant-Gravitas/AutoGPT@9c8bb5550f (2026-08-14).
Data as JSON: /api/errors/9600551ae7ed8d8f.
Report an issue: GitHub.