HeyPuter/puter · error · HttpError
access_denied
access_denied
Error message
Write access denied for destination
What it means
Error "Write access denied for destination" thrown in HeyPuter/puter.
Source
Thrown at src/backend/drivers/ai-video/VideoGenerationDriver.ts:516
let ancestorsCache: Promise<
Array<{ uid: string; path: string }>
> | null = null;
const canWrite = await this.services.acl.check(
actor,
{
path: pathToCheck,
resolveAncestors() {
if (!ancestorsCache) {
ancestorsCache =
fsService.getAncestorChain(pathToCheck);
}
return ancestorsCache;
},
},
'write',
);
if (!canWrite) {
throw new HttpError(403, 'Write access denied for destination', {
legacyCode: 'access_denied',
});
}
}
#resolveModel(modelId: string, provider?: string): IVideoModel | null {
const models = this.#modelIdMap[modelId?.trim().toLowerCase()];
if (!models || models.length === 0) return null;
if (!provider) return models[0];
// Prefer exact primary ID match over alias matches
const exactIdMatch = models.find(
(m) => m.id === modelId && m.provider === provider,
);
if (exactIdMatch) return exactIdMatch;
const exactPuterIdMatch = models.find(
(m) => m.puterId === modelId && m.provider === provider,View on GitHub (pinned to 908ec23eda)
Solutions
- Choose a destination path the caller has write permission for.
- Verify ownership or permissions on the target directory before writing.
When it happens
Trigger: Thrown at src/backend/drivers/ai-video/VideoGenerationDriver.ts:516 when the library encounters an invalid state.
Common situations: See trigger scenarios.
Understand the failure class
- Authentication and authorization failures — expired tokens, bad credentials, and missing scopes.
AI-assisted analysis of HeyPuter/puter@908ec23eda (2026-08-12).
Data as JSON: /api/errors/e603c3e6c1cf15b1.
Report an issue: GitHub.