{"record":{"id":"ad494046f19faaf9","repo":"openclaw/openclaw","slug":"codex-memory-source-must-not-be-a-symbolic-link","errorCode":null,"errorMessage":"Codex memory source must not be a symbolic link: ${candidate.path}","messagePattern":"Codex memory source must not be a symbolic link: (.+?)","errorType":"exception","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"extensions/codex/src/migration/source-files.ts","lineNumber":134,"sourceCode":"      return;\n    }\n    for (const entry of await safeReadDir(dir)) {\n      if (entry.isDirectory()) {\n        await visit(path.join(dir, entry.name), depth + 1);\n      }\n    }\n  }\n  await visit(root, 0);\n  return [...discovered.values()].toSorted((a, b) => a.source.localeCompare(b.source));\n}\n\nasync function discoverCodexMemoryFile(\n  candidate: CodexMemorySource,\n): Promise<CodexMemorySource | undefined> {\n  try {\n    const stat = await fs.lstat(candidate.path);\n    if (stat.isSymbolicLink()) {\n      throw new Error(`Codex memory source must not be a symbolic link: ${candidate.path}`);\n    }\n    if (!stat.isFile()) {\n      throw new Error(`Codex memory source must be a regular file: ${candidate.path}`);\n    }\n    return candidate;\n  } catch (error) {\n    if (\n      error &&\n      typeof error === \"object\" &&\n      \"code\" in error &&\n      (error as { code?: unknown }).code === \"ENOENT\"\n    ) {\n      return undefined;\n    }\n    throw error;\n  }\n}\n","sourceCodeStart":116,"sourceCodeEnd":152,"githubUrl":"https://github.com/openclaw/openclaw/blob/01804a75319da4b69c9ab98ceaa30477e22b8c0b/extensions/codex/src/migration/source-files.ts#L116-L152","documentation":"Error \"Codex memory source must not be a symbolic link: ${candidate.path}\" thrown in openclaw/openclaw.","triggerScenarios":"Thrown at extensions/codex/src/migration/source-files.ts:134 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":[],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"01804a75319da4b69c9ab98ceaa30477e22b8c0b","analyzedAt":"2026-08-12T04:37:58.197Z","schemaVersion":2},"datasetVersion":"2026-08-12T13:17:24.610Z"}