Error and warning reference
A searchable catalogue of the messages RoughCut shows, what each one means, and the corrective action.
This is a searchable list of the messages RoughCut shows you, grouped by area: setup, files, transcription, AI provider, cutting and export, purchases, evaluation, and permissions. Each entry gives the message as it appears, what it means, the first action to take, and where the full explanation lives. Warnings are included alongside failures, because several of RoughCut's most important messages are cautions rather than errors — variable frame rate, unclear transcription, degraded transcription, and an isolated Second Look failure all leave you with a usable result. If you are working from a symptom rather than a message, start from the troubleshooting page instead.
On this page
How to use this page
Search the page for a distinctive phrase from your message. Messages with %@ or a number in them show a value in the app — match on the surrounding words.
If you have a symptom rather than a message, Troubleshooting by symptom is the better starting point.
Setup
| Message | Meaning | First action |
|---|---|---|
Download the Whisper model in Settings first. | On-device transcription needs the speech model | Settings → Models & Data → Download from Hugging Face |
The speech model (~1.6 GB) is required for transcription. | Same, shown in Settings | Download or import the model |
Whisper model missing at <path>. Download or import it in Settings. | The file is not where RoughCut expects | Clear Whisper model path, then download or import again |
Model download failed: <reason> | The download did not complete | Retry, or use Copy download link and Import model file… |
Model import failed: <reason> | The chosen file could not be copied in | Confirm it is the .bin file and try again |
Could not save configuration: <reason> | Settings could not be written to disk | Check free disk space, then Save Configuration again |
Full detail: Install the local speech model.
Files
| Message | Meaning | First action |
|---|---|---|
Unsupported file type .<ext>. Video: mp4, mov, mkv, avi, m4v. Audio: wav, mp3, m4a. | The extension is not accepted | Convert to a supported format |
RoughCut can't open "<name>". Video: … Audio: … | A file handed to RoughCut from elsewhere is unsupported | Same as above |
source media not found: <path> | The source file moved or was deleted | Restore it, or re-add the file and process again |
extract_audio: Audio has a timestamp gap or offset; cannot preserve source timing | Audio timestamps have a gap or offset, so RoughCut stopped because it could not preserve source timing | Re-export the recording with continuous audio timing, then create a new job. If it still fails, contact support |
Lost access to the source video. Re-add the file and process again. | The stored file permission is no longer valid | Re-add the file in a new job |
<name> is not ready yet. | You tried to export an artifact the job has not produced | Wait for the job to finish |
SRT file is missing from the job folder. | The transcript artifact is absent | Run the transcription again |
Could not load the transcript: <reason> | The transcript file could not be read | Run the transcription again |
Full detail: Choose video and audio inputs.
Transcription
| Message | Meaning | First action |
|---|---|---|
Cloud transcription needs your OpenAI API key. | Cloud selected with no key saved | Add the key, or switch the job to On-device |
Cloud transcription needs your OpenAI API key. Add it in Settings → LLM, or switch this job to on-device transcription. | Same, at job preflight | As above |
transcription produced no words — cannot build a cut | No speech was recognised | Confirm the file has audible speech; try a separate mic track |
transcription produced only known hallucination phrases — no speech to keep | A Transcribe Only job found nothing but known whisper hallucination phrases over music or room tone | Confirm you chose the right file or audio track; there is no speech to transcribe |
OpenAI model '<model>' returned a transcript without word timestamps… | The chosen cloud model does not return word times | Set OpenAI transcription model back to whisper-1 |
OpenAI cloud transcription failed (<model>): <reason> | The cloud request failed after a retry | Check key and network, or switch to on-device |
Transcription warnings — not failures
| Message | Meaning | What to do |
|---|---|---|
<n> sections couldn't be transcribed cleanly. They are kept in your cut — use ⏵ to listen and decide. | Regions were kept rather than silently dropped | Listen to each flagged range before relying on it |
<n> sections flagged — listen before trusting | Same, on a transcript result | Listen and correct outside RoughCut if needed |
Unclear transcription — listen before trusting | Row-level tag on a kept segment | Audition that row |
Transcription may have degraded here — listen | A weaker signal than the above | Audition that row |
Transcription noise over quiet section | Recognised words over near-silence | Usually safe to remove |
<n> known whisper hallucinations removed | Known hallucination phrases were left out of a Transcribe Only result and listed with their times | Read the list; nothing else to do |
Full detail: Read and verify a transcript result.
AI provider
| Message | Meaning | First action |
|---|---|---|
No API key for provider '<provider>'. Add it in Settings, or disable bad-take removal for a silence-only cut. | The editing pass needs a key | Add a key, or turn Bad-take removal off |
Unknown AI provider '<provider>'. Choose openai, gemini or anthropic in Settings → LLM provider. | The saved LLM provider value is not one RoughCut knows | Choose a provider, then Save Configuration |
Setting <key> must be text such as default, medium or high. Fix it in Settings → Choose Model & Estimate. | A saved reasoning level is not text, usually after a hand-edited configuration file | Choose a level in Choose Model & Estimate…, then Save Configuration |
Reasoning level '<level>' is not recognised. Choose one in Settings → Choose Model & Estimate. | The saved reasoning level is not a level RoughCut knows | As above |
<model> does not support reasoning level '<level>'. Supported: <levels>. Change it in Settings → Choose Model & Estimate. | The selected model does not offer the saved level. The job stops before any provider call, so nothing is billed | Choose one of the listed levels |
Setting <key> must be text such as tangent:0.98 or off. Fix it in Settings → Full → Pipeline v2. | A first-pass confidence gate holds a value that is not text | Retype it, or clear the field to restore the default |
Claude HTTP <status>: <details> | Anthropic rejected the request; the details are Anthropic's own message | See Create and add a Claude API key |
Claude: no HTTP response, Claude stream ended before the response completed | The connection to Anthropic dropped | Check the connection and retry |
Claude stream error (<kind>): <details> | Anthropic reported an error part-way through the response | Retry; if it repeats, check Anthropic's status page |
Claude declined this request (stop_reason refusal) | The model declined to process this transcript | Retry, or choose another model or provider for this recording |
Claude: the transcript exceeds this model's context window (stop_reason model_context_window_exceeded) | A transcript chunk is too long for the model | Choose a model with a larger context window, or lower LLM editor chunk size (words) |
Claude returned no text (stop_reason <reason>) | Claude ended without an answer | Retry |
Summarizing needs an AI provider API key. | No AI provider key is saved. Summarising uses the selected provider's key, or any other provider's key when that one is missing | Add a key in Settings |
Over the 500-character limit (<n>). | The video goal is too long | Shorten it, or use Summarize with AI if you have Pro |
The model could not fit the goal into 500 characters (got <n>). Try again, or trim it by hand. | Summarising failed twice rather than truncating silently | Retry, or shorten the goal yourself |
llm_editor_exemplars=<n> but the exemplar bank at <path> is unusable: <reason> | A bank exists but cannot be parsed | Re-import a valid bank, or set LLM editor exemplars to 0 |
Exemplar bank import failed: <reason> | The chosen file could not be imported | Confirm it is a valid exemplars_v2.json |
Editor notices — not failures
| Message | Meaning |
|---|---|
LLM editor: skipped — silence-only cut. | Bad-take removal was off. This is the expected silence-only result |
Second Look could not run — this cut is the standard single-pass result. <reason> | The refine pass failed and was isolated. Your standard cut is intact |
Editor was unsure about this cut (<label>) — kept until you decide | A first-pass cut below the confidence gate. Kept as a review suggestion; Remove accepts it |
Only some editor samples cut this (<label>) — kept until you decide | With Editor samples (voting) above 1, a cut only a minority of samples made. Kept as a suggestion |
Second Look suggests removing (<label>) — kept until you decide | A Second Look proposal that failed a gate. Kept as a suggestion |
Condense suggestion (<label>) — kept until you decide | A paragraph-scale passage the condense pass would drop. Suggestions only |
Cutting and export
| Message | Meaning | First action |
|---|---|---|
cut plan kept nothing — refusing to export an empty timeline | Everything would have been removed | Use a stricter recording environment or raise Min silence (sec) |
Export failed: <reason> | The file could not be written | Check the destination and free space |
Could not create job: <reason> | The job could not be set up | Check free disk space, then retry |
Job failed | Heading on a failed job | Read the message beneath it |
Job cancelled | Heading on a job you stopped yourself | Nothing to fix; a cancelled run costs no included cut |
This job is no longer running in this app session. Start a new job to process it again. | The job's worker is gone — typically the app was quit and reopened while it was running | Create the job again; a job does not survive a relaunch |
media info missing for a cutting job | Media could not be probed | Confirm the file plays, and try a constant-frame-rate version |
Export and cut warnings
| Message | Meaning |
|---|---|
Variable frame rate detected. For best relinking results, transcode to constant frame rate before import. | Your source is VFR. The cut still works, but relinking is more reliable with CFR |
Smart Silence picked <n> dB | The measured threshold Smart Silence chose for this job. Informational |
Cut list recomputed — re-export the FCPXML. | Your review changes are applied. Export again — a previously exported file does not update |
Purchases
| Message | Meaning | First action |
|---|---|---|
The App Store returned no products for this app right now. Please retry in a moment. | A temporary App Store issue, not a purchase failure | Retry |
The App Store did not return this product just now. Please retry. | Same for a single product | Retry |
The App Store did not return the subscription plans just now. Please retry. | Same for the Pro plans | Retry |
The App Store request failed: <reason> | The store request errored | Check the network and retry |
The App Store could not verify this purchase: <reason> | Verification failed | Retry, then Restore Purchases |
RoughCut could not find the window to show Apple's payment confirmation in. Nothing was charged. Close this sheet and try again. | RoughCut could not tell which window Apple's payment confirmation belongs to, so it stopped before asking the App Store | Close the purchase screen and try again |
No previous purchases found for this Apple Account. | Nothing to restore on this account | Confirm you are signed in with the purchasing Apple Account |
No active RoughCut Pro subscription found for this Apple Account. | No live subscription found | Check App Store subscription settings |
Full detail: Trial, core unlock, and RoughCut Pro.
Evaluation
| Message | Meaning | First action |
|---|---|---|
Golden-set folder not connected. Grant access in Settings → Models & Data first. | No folder permission stored | Grant access once in Models & Data. Development-only: the App Store build has no such picker, so this message cannot appear in it |
An evaluation is already running. | Only one run at a time | Wait for the current run |
mode must be 'smoke', 'full', or a subset list defined in eval_manifest.json… | An invalid run name | Fix the manifest key |
Cloud transcription needs your OpenAI API key — add it in Settings → Full → Transcription, or switch the eval back to on-device. | A cloud evaluation with no key | Add the key or switch back |
Regression flagged: word-F1 mean dropped more than 3 points vs the previous run. | A caution, not a failure — the run still wrote | Compare against the same mode and gold |
Skip reasons per clip — clip_dir_missing, missing_media, missing_gold — are recorded rather than hidden. See Build a golden set.
Validation messages
These appear in red under the controls and block Process until fixed.
| Message | Valid range |
|---|---|
Silence threshold must be between -60 and -10 dB. | −60 to −10 |
Min silence must be between 0.1 and 5 seconds. | 0.1 to 5.0 |
Aggressiveness must be conservative, standard, or aggressive. | Those three values |
Language must be auto, en, or ar. | Those three values |
Video goal must be 500 characters or fewer. | Up to 500 characters |
A message that is not here
Send it to support exactly as written, with what you were doing when it appeared. See Contact support.