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.