Yeachan-Heo/oh-my-codex · error · Error
agents-init target must stay inside the current working dire
Error message
agents-init target must stay inside the current working directory: ${requestedTarget} What it means
agents-init resolves --target/<path> against the current working directory and refuses any path that escapes it (relative path starting with '..'). This is a safety boundary so the scaffolder cannot create/modify files outside the project tree. Absolute paths elsewhere on disk are also rejected via the same relative() check.
Source
Thrown at src/cli/agents-init.ts:291
await writeFile(destinationPath, content);
}
summary.updated += 1;
return { action: "updated", backedUp };
}
export async function agentsInit(
options: AgentsInitOptions = {},
): Promise<void> {
const dryRun = options.dryRun === true;
const force = options.force === true;
const verbose = options.verbose === true;
const cwd = process.cwd();
const requestedTarget = options.targetPath ?? ".";
const targetDir = resolve(cwd, requestedTarget);
const relativeTarget = relative(cwd, targetDir);
if (relativeTarget.startsWith("..")) {
throw new Error(
`agents-init target must stay inside the current working directory: ${requestedTarget}`,
);
}
const targetStat = await stat(targetDir).catch(() => null);
if (!targetStat)
throw new Error(`agents-init target not found: ${requestedTarget}`);
if (!targetStat.isDirectory())
throw new Error(
`agents-init target must be a directory: ${requestedTarget}`,
);
const summary = createEmptySummary();
const plannedDirs = await resolveTargetDirectories(targetDir);
const backupRoot = join(
cwd,
".omx",
"backups",View on GitHub (pinned to 3ad79a8a6f)
Solutions
- Run the command from the directory you want to scaffold into and pass `.` or a path inside it
- cd to the intended project root first
- Use a subdirectory of cwd as the target
Example fix
# before (cwd=/repo) omx agents-init ../other-repo # after cd ../other-repo && omx agents-init .
Defensive patterns
Strategy: validation
Validate before calling
import { resolve, relative } from 'node:path';
const targetDir = resolve(process.cwd(), requestedTarget);
if (relative(process.cwd(), targetDir).startsWith('..')) {
console.error('target must be inside the current working directory');
process.exit(2);
} Type guard
const isInsideCwd = (p: string): boolean => !relative(process.cwd(), resolve(process.cwd(), p)).startsWith('..'); Prevention
- Always run agents-init from the project root
- Pass '.' or relative subdirectory paths
- Never feed absolute paths from other locations into --target
When it happens
Trigger: Passing `--target ../other-project`, `--target /tmp`, or an absolute path outside cwd; symlinks that resolve outside cwd are not caught here but absolute paths are.
Common situations: Running agents-init from a subdirectory while pointing at a sibling directory, or scripting against absolute paths in CI where cwd differs from expectations.
Related errors
- agents-init target not found: ${requestedTarget}
- agents-init target must be a directory: ${requestedTarget}
- Unknown agents-init option: ${arg}\n${AGENTS_INIT_USAGE}
- agents-init accepts at most one path argument.\n${AGENTS_INI
- artifact path must be relative
AI-assisted analysis of Yeachan-Heo/oh-my-codex@3ad79a8a6f (2026-08-27).
Data as JSON: /api/errors/ded8ff83aeefdb31.
Report an issue: GitHub.