{"record":{"id":"26cfdf97c0f38eb8","repo":"deepseek-ai/deepseek-harness","slug":"tool-fs-search-no-session-owner-for-exec-name","errorCode":null,"errorMessage":"tool-fs-search: no session owner for ${exec.name} result; complete result not saved","messagePattern":"tool-fs-search: no session owner for (.+?) result; complete result not saved","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/fs/tool-fs-search/src/search-core.ts","lineNumber":383,"sourceCode":" * warning and returns `undefined` — the caller keeps the inline result and\n * reports that the complete result could not be saved; search success never\n * turns into `isError` because spill storage is unavailable.\n *\n * @param ctx - the plugin context; `spillStore` is looked up opportunistically.\n * @param exec - the tool-execution context; supplies the owning session, tool name, and call id.\n * @param suggestedName - the backend-sanitized filename hint (e.g. `grep-results.txt`).\n * @param content - the complete formatted result to persist.\n * @returns the saved spill reference, or `undefined` when the result could not be saved.\n */\nexport async function trySaveFormattedResult(\n  ctx: Context,\n  exec: ToolExecution,\n  suggestedName: string,\n  content: string,\n): Promise<SpillRef | undefined> {\n  const sessionId = exec.agent?.session.header.id\n  if (sessionId === undefined) {\n    ctx.logger.warn(`tool-fs-search: no session owner for ${exec.name} result; complete result not saved`)\n    return undefined\n  }\n  const spillStore = ctx.get('spillStore')\n  if (!spillStore) {\n    ctx.logger.warn(`tool-fs-search: no ctx.spillStore backend loaded; complete ${exec.name} result not saved`)\n    return undefined\n  }\n  const save: SaveTextSpill = {\n    owner: { sessionId },\n    source: { toolName: exec.name, callId: exec.callId, label: 'result' },\n    suggestedName,\n    content,\n  }\n  try {\n    return await spillStore.saveText(save)\n  } catch (error: unknown) {\n    // Best-effort: a storage failure must never fail the search or hide the\n    // inline result — the footer reports the unsaved remainder instead.","sourceCodeStart":365,"sourceCodeEnd":401,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/fs/tool-fs-search/src/search-core.ts#L365-L401","documentation":"Error \"tool-fs-search: no session owner for ${exec.name} result; complete result not saved\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/fs/tool-fs-search/src/search-core.ts:383 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Run the search within an active session so the complete result can be saved; the result is still returned inline."],"exampleFix":null,"handlingStrategy":null,"validationCode":null,"typeGuard":null,"tryCatchPattern":null,"preventionTips":[],"tags":[],"backgroundTag":null,"analyzedSha":"b150a551b8d465e31e418e1b2eaf5e79bbb7d28e","analyzedAt":"2026-08-24T18:12:29.105Z","schemaVersion":2},"datasetVersion":"2026-08-24T22:17:12.610Z"}