vercel/ai · error · Error
ACP skillsDirectory ${JSON.stringify(skillsDirectory)} must
Error message
ACP skillsDirectory ${JSON.stringify(skillsDirectory)} must be a relative POSIX path without traversal. What it means
Error "ACP skillsDirectory ${JSON.stringify(skillsDirectory)} must be a relative POSIX path without traversal." thrown in vercel/ai.
Source
Thrown at packages/harness-acp/src/v1/acp-v1-skills.ts:88
skillsDirectory?: string;
sessionWorkDir: string;
}): string {
const containsTraversal = skillsDirectory
.split(/[\\/]/)
.some(segment => segment === '..');
const normalizedDirectory = path.posix.normalize(skillsDirectory);
if (
skillsDirectory.length === 0 ||
skillsDirectory.includes('\\') ||
path.posix.isAbsolute(skillsDirectory) ||
path.win32.isAbsolute(skillsDirectory) ||
containsTraversal ||
normalizedDirectory === '.' ||
normalizedDirectory.startsWith('../') ||
normalizedDirectory.includes('/../') ||
normalizedDirectory.endsWith('/..')
) {
throw new Error(
`ACP skillsDirectory ${JSON.stringify(skillsDirectory)} must be a relative POSIX path without traversal.`,
);
}
const rootDir = path.posix.join(implementationHomeDir, normalizedDirectory);
assertOutsideSessionWorkDir({ rootDir, sessionWorkDir });
return rootDir;
}
function validateACPSkills({
skills,
}: {
skills: ReadonlyArray<HarnessV1Skill>;
}): void {
const skillNames = new Set<string>();
for (const skill of skills) {
if (
!ACP_SKILL_NAME_PATTERN.test(skill.name) ||View on GitHub (pinned to 69428b1f8b)
When it happens
Trigger: Thrown at packages/harness-acp/src/v1/acp-v1-skills.ts:88 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/75358927e9dd85ac.
Report an issue: GitHub.