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.