vercel/ai · error · Error
Invalid ACP skill file path ${JSON.stringify(filePath)} for
Error message
Invalid ACP skill file path ${JSON.stringify(filePath)} for skill ${JSON.stringify(skillName)}: expected a relative POSIX path without traversal. What it means
Error "Invalid ACP skill file path ${JSON.stringify(filePath)} for skill ${JSON.stringify(skillName)}: expected a relative POSIX path without traversal." thrown in vercel/ai.
Source
Thrown at packages/harness-acp/src/v1/acp-v1-skills.ts:169
filePath: string;
}): string {
const containsTraversal = filePath
.split(/[\\/]/)
.some(segment => segment === '..');
const normalizedPath = path.posix.normalize(filePath);
const invalid =
filePath.length === 0 ||
filePath.endsWith('/') ||
filePath.includes('\\') ||
path.posix.isAbsolute(filePath) ||
path.win32.isAbsolute(filePath) ||
containsTraversal ||
normalizedPath === '.' ||
normalizedPath.startsWith('../') ||
normalizedPath.includes('/../') ||
normalizedPath.endsWith('/..');
if (invalid) {
throw new Error(
`Invalid ACP skill file path ${JSON.stringify(filePath)} for skill ${JSON.stringify(
skillName,
)}: expected a relative POSIX path without traversal.`,
);
}
return normalizedPath;
}
function assertOutsideSessionWorkDir({
rootDir,
sessionWorkDir,
}: {
rootDir: string;
sessionWorkDir: string;
}): void {
const relative = path.posix.relative(sessionWorkDir, rootDir);
const isInside =
relative === '' ||View on GitHub (pinned to 69428b1f8b)
When it happens
Trigger: Thrown at packages/harness-acp/src/v1/acp-v1-skills.ts:169 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of vercel/ai@69428b1f8b (2026-08-30).
Data as JSON: /api/errors/1dd8f128530ecae7.
Report an issue: GitHub.