{"record":{"id":"84973f7580e609b6","repo":"diegosouzapw/OmniRoute","slug":"grok-home-contains-invalid-characters","errorCode":null,"errorMessage":"GROK_HOME contains invalid characters","messagePattern":"GROK_HOME contains invalid characters","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"src/shared/services/grokBuildConfig.ts","lineNumber":43,"sourceCode":"\nexport interface GrokBuildApplyOptions {\n  baseUrl: string;\n  apiKey?: string | null;\n  model: string;\n  contextWindow?: number;\n  subagentModels?: Partial<Record<GrokSubagentType, { model: string; contextWindow?: number }>>;\n}\n\n/** Resolve config.toml from GROK_HOME or the CLI config home. */\nexport function resolveGrokBuildConfigPath(env: NodeJS.ProcessEnv, configHome: string): string {\n  const grokHome = env.GROK_HOME?.trim();\n  if (!grokHome) return path.join(configHome, \".grok\", \"config.toml\");\n  const hasTraversal = grokHome.split(/[\\\\/]+/).includes(\"..\");\n  if (!path.isAbsolute(grokHome) || hasTraversal) {\n    throw new Error(\"GROK_HOME must be an absolute path without traversal\");\n  }\n  if (/[$`;&|<>\\r\\n\\0]/.test(grokHome)) {\n    throw new Error(\"GROK_HOME contains invalid characters\");\n  }\n  return path.join(path.normalize(grokHome), \"config.toml\");\n}\n\nconst UNSET_SENTINEL = \"__omniroute_unset__\";\nconst MANAGED_MARKER = '# omniroute-managed = \"true\"';\nconst LEGACY_DESCRIPTION = \"Routed via OmniRoute gateway\";\nconst MODELS_SECTION = \"models\";\nconst SUBAGENT_MODELS_SECTION = \"subagents.models\";\n\nconst escapeRegExp = (value: string): string => value.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\nconst tomlString = (value: string): string => JSON.stringify(String(value));\nconst modelSlot = (type: GrokSubagentType): string => `${GROK_MAIN_MODEL_SLOT}-${type}`;\n\nconst sectionRegExp = (section: string): RegExp =>\n  new RegExp(`^\\\\[${escapeRegExp(section)}\\\\][ \\\\t]*\\\\r?\\\\n((?:(?!\\\\[)[^\\\\r\\\\n]*\\\\r?\\\\n?)*)`, \"m\");\n\nconst previousDefaultRegExp = /^# omniroute-prev-default = \"([^\"]*)\"[ \\t]*\\r?\\n?/m;","sourceCodeStart":25,"sourceCodeEnd":61,"githubUrl":"https://github.com/diegosouzapw/OmniRoute/blob/a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d/src/shared/services/grokBuildConfig.ts#L25-L61","documentation":"Error \"GROK_HOME contains invalid characters\" thrown in diegosouzapw/OmniRoute.","triggerScenarios":"Thrown at src/shared/services/grokBuildConfig.ts:43 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":"a179ffed5bb2e0b883b9ae7214ce8717b2a94c4d","analyzedAt":"2026-08-25T18:35:09.898Z","schemaVersion":2},"datasetVersion":"2026-08-25T21:54:21.419Z"}