{"record":{"id":"9600551ae7ed8d8f","repo":"Significant-Gravitas/AutoGPT","slug":"transcription-failed","errorCode":null,"errorMessage":"Transcription failed","messagePattern":"Transcription failed","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"autogpt_platform/frontend/src/app/(platform)/copilot/components/ChatInput/useVoiceRecording.ts","lineNumber":109,"sourceCode":"      setIsTranscribing(true);\n      setError(null);\n\n      try {\n        const formData = new FormData();\n        formData.append(\"audio\", audioBlob);\n        const draft = valueRef.current.trim();\n        if (isBrainDumpEnabledRef.current && draft) {\n          formData.append(\"context\", draft);\n        }\n\n        const response = await fetch(\"/api/transcribe\", {\n          method: \"POST\",\n          body: formData,\n        });\n\n        if (!response.ok) {\n          const data = await response.json().catch(() => ({}));\n          throw new Error(data.error || \"Transcription failed\");\n        }\n\n        const data = await response.json();\n        if (data.text) {\n          handleTranscription(data.text);\n        }\n      } catch (err) {\n        const message =\n          err instanceof Error ? err.message : \"Transcription failed\";\n        setError(message);\n        console.error(\"Transcription error:\", err);\n      } finally {\n        setIsTranscribing(false);\n      }\n    },\n    [handleTranscription, inputId],\n  );\n","sourceCodeStart":91,"sourceCodeEnd":127,"githubUrl":"https://github.com/Significant-Gravitas/AutoGPT/blob/9c8bb5550f446ba5d3046b78896578742495b3cf/autogpt_platform/frontend/src/app/(platform)/copilot/components/ChatInput/useVoiceRecording.ts#L91-L127","documentation":"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.","triggerScenarios":"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.","commonSituations":"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.","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."],"exampleFix":"// before\nawait api.post(`/blocks/${blockId}/execute`, data);\n\n// after\nconst block = (await api.get('/blocks')).find(b => b.id === blockId);\nif (block?.disabled) throw new Error('Block is disabled');\nawait api.post(`/blocks/${blockId}/execute`, data);","handlingStrategy":"validation","validationCode":"const block = (await api.get('/blocks')).find(b => b.id === blockId);\nif (block?.disabled) throw new Error('Block is disabled');","typeGuard":"const isExecutableBlock = (b: Block | undefined): b is Block =>\n  !!b && !b.disabled;","tryCatchPattern":"const resp = await api.post(`/blocks/${blockId}/execute`, data);\nif (resp.status === 403) { /* surface 'disabled' message, hide block */ }","preventionTips":["Honor the disabled flag from GET /blocks in the UI","Refresh block metadata after deployments"],"tags":["blocks","disabled","feature-flag"],"backgroundTag":null,"analyzedSha":"9c8bb5550f446ba5d3046b78896578742495b3cf","analyzedAt":"2026-08-14T17:17:21.957Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}