Skip to content

Claude audio transcribe - not working#161

Open
tleyden wants to merge 4 commits into
mainfrom
claude_audio_transcribe
Open

Claude audio transcribe - not working#161
tleyden wants to merge 4 commits into
mainfrom
claude_audio_transcribe

Conversation

@tleyden

@tleyden tleyden commented Jul 9, 2026

Copy link
Copy Markdown
Owner

No description provided.

@coderabbitai

coderabbitai Bot commented Jul 9, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are limited based on label configuration.

🏷️ Required labels (at least one) (1)
  • code-rabbit-review

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Pro Plus

Run ID: 75ba78d1-5b80-4665-8c15-87e15f37f522

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch claude_audio_transcribe

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@greptile-apps

greptile-apps Bot commented Jul 9, 2026

Copy link
Copy Markdown
Contributor

Greptile Summary

This PR adds inline base64 audio support to the native Whisper transcription tool. The main changes are:

  • Adds base64 as a platform dependency.
  • Accepts either a download URL reference or inline base64 audio bytes.
  • Adds an 8 MiB inline audio cap and staging path.
  • Updates the tool input schema and related tests.
  • Documents the new inline audio threat-model surface.

Confidence Score: 4/5

The inline audio request path needs a resource-limit fix before merging.

The existing download URL flow appears preserved, but the new inline path can allocate oversized JSON payloads before its audio-size guard runs, and the schema change may affect strict MCP clients that expect audio_file to be a plain object.

crates/platform/src/native_mcp_tools/whisper_transcribe.rs

T-Rex T-Rex Logs

What T-Rex did

  • Reproduced the inline payload allocation path and verified that deserialization occurs before the inline size guard, producing an owned audio_data string of length 11,184,816 and exiting with InlineSizeLimitExceeded at 8,388,608 bytes.
  • Attempted a direct cargo check of brain3-platform tests, but the build was blocked by missing libclang, preventing full crate compilation.
  • Environment checks and blockers were collected and inspected: the version check completed with exit code 0, the narrow cargo test failed due to missing-libclang, and native-dependency checks found no clang/libclang output and ldconfig unavailable.
  • Artifacts supporting the verification were uploaded, including the harness source, the harness manifest, the harness run log, the full crate check log, and the environment logs.

View all artifacts

T-Rex Ran code and verified through T-Rex

Important Files Changed

Filename Overview
crates/platform/src/native_mcp_tools/whisper_transcribe.rs Adds the inline base64 input variant, schema branch, decode/staging path, size checks, errors, and tests.
crates/platform/Cargo.toml Adds a direct dependency on base64 0.22.
Cargo.lock Records brain3-platform as a direct consumer of base64 0.22.1.
SECURITY_AUDIT.md Documents inline base64 audio as an authorized MCP-client input and attacker capability.
docs/superpowers/plans/2026-07-09-claude-ai-audio-transcription-upload.md Adds the plan and background for supporting Claude.ai audio transcription.

Comments Outside Diff (1)

  1. crates/platform/src/native_mcp_tools/whisper_transcribe.rs, line 287-350 (link)

    P2 Schema Shape Breaks Strict Clients

    The advertised audio_file schema changes from a plain object to a oneOf wrapper. Existing MCP clients that generate forms or validate tool inputs against the previous object shape can reject or fail to render this parameter even though the old { download_url, file_id } runtime input still works, making the ChatGPT download path unreachable for those clients.

    Note: If this suggestion doesn't match your team's coding style, reply to this and let me know. I'll remember it for next time!

Reviews (1): Last reviewed commit: "implement claude code fix attempt. unte..." | Re-trigger Greptile


#[derive(Debug, Deserialize)]
#[serde(deny_unknown_fields)]
struct InlineBase64AudioInput {

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P1 Inline Payload Allocates First

When an authorized MCP client sends a very large audio_data value, the request body is parsed into JSON and deserialized into this String before encoded_base64_may_exceed_decoded_limit runs. The new 8 MiB inline cap can still reject the call, but only after the gateway has already allocated and processed the oversized JSON payload, so repeated calls can exhaust memory or CPU before the guard is reached.

Artifacts

Repro: Rust harness source that exercises deserialization before the inline size guard

  • Contains supporting evidence from the run (text/x-rust; charset=utf-8).

Repro: Cargo manifest used to compile and run the focused harness

  • Contains supporting evidence from the run (text/toml; charset=utf-8).

Repro: harness run output showing owned String materialization before InlineSizeLimitExceeded

  • Keeps the command output available without making the summary code-heavy.

Repro: full crate check output showing libclang blocked direct brain3-platform test execution

  • Keeps the command output available without making the summary code-heavy.

View artifacts

T-Rex Ran code and verified through T-Rex

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant