{"record":{"id":"88647ea98f01651a","repo":"Kong/insomnia","slug":"failed-to-read-filepath","errorCode":null,"errorMessage":"Failed to read \"${filePath}\"","messagePattern":"Failed to read \"(.+?)\"","errorType":"exception","errorClass":"InsoError","httpStatus":null,"severity":"error","filePath":"packages/insomnia-inso/src/commands/lint-specification.ts","lineNumber":80,"sourceCode":"export const safeRefResolver = new Resolver({\n  resolvers: {\n    http: safeHttpResolver,\n    https: safeHttpResolver,\n  },\n});\n\nexport const getRuleSetFileFromFolderByFilename = async (filePath: string) => {\n  try {\n    const filesInSpecFolder = await fs.promises.readdir(path.dirname(filePath));\n    const rulesetFileName = filesInSpecFolder.find(file => file.startsWith('.spectral'));\n    if (rulesetFileName) {\n      logger.trace(`Loading ruleset from \\`${rulesetFileName}\\``);\n      return path.resolve(path.dirname(filePath), rulesetFileName);\n    }\n    logger.info(`Using ruleset: oas, see ${oas.documentationUrl}`);\n    return;\n  } catch (error) {\n    throw new InsoError(`Failed to read \"${filePath}\"`, error);\n  }\n};\nexport async function lintSpecification({\n  specContent,\n  rulesetFileName,\n}: {\n  specContent: string;\n  rulesetFileName?: string;\n}) {\n  const spectral = new Spectral({ resolver: safeRefResolver });\n  // Use custom ruleset if present\n  let ruleset = oas;\n  try {\n    if (rulesetFileName) {\n      // Step 1: flatten local extends and validate remote URLs (SSRF + disallowed keys).\n      const bundled = await bundleSpectralRuleset(rulesetFileName);\n      // Step 2: fetch + fully inline remote extends so bundleAndLoadRuleset has nothing to fetch,\n      // closing the validate-then-use race.","sourceCodeStart":62,"sourceCodeEnd":98,"githubUrl":"https://github.com/Kong/insomnia/blob/d9bb2b0142600f21309832daea3317942d285984/packages/insomnia-inso/src/commands/lint-specification.ts#L62-L98","documentation":"Error \"Failed to read \"${filePath}\"\" thrown in Kong/insomnia.","triggerScenarios":"Thrown at packages/insomnia-inso/src/commands/lint-specification.ts:80 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":"d9bb2b0142600f21309832daea3317942d285984","analyzedAt":"2026-08-26T18:04:05.187Z","schemaVersion":2},"datasetVersion":"2026-08-26T21:11:00.512Z"}