{"record":{"id":"5ff8572db346938b","repo":"deepseek-ai/deepseek-harness","slug":"cannot-resume-session-persistence-is-not-configur","errorCode":null,"errorMessage":"cannot resume: session persistence is not configured (load a dsh-session-persistence backend)","messagePattern":"cannot resume: session persistence is not configured \\(load a dsh-session-persistence backend\\)","errorType":"validation","errorClass":"Error","httpStatus":null,"severity":"error","filePath":"packages/core/agent-loop/src/index.ts","lineNumber":656,"sourceCode":"      const setupCommit = await raceAbort(setup?.(prepared.agent.ctx), prepared.signal, id)\n      setupCommit?.commit()\n      return prepared.publish(source)\n    } catch (error: unknown) {\n      await prepared.dispose()\n      throw error\n    }\n  }\n\n  /**\n   * Resume an owned agent from the configured persistence service.\n   * @param ownerCtx - caller context that owns load, setup, and the live lifecycle.\n   * @param options - persisted identity, loop options, setup, and cancellation.\n   * @returns the published handle.\n   */\n  async resume(ownerCtx: Context, options: ResumeAgentOptions): Promise<AgentHandle> {\n    const persistence = this.runtime.ctx.get('sessionPersistence')\n    if (persistence === undefined) {\n      throw new Error('cannot resume: session persistence is not configured (load a dsh-session-persistence backend)')\n    }\n    return this.resumeWith(ownerCtx, persistence, options)\n  }\n\n  /** Resume through an explicit persistence handle used by the deferred config path. */\n  private resumeWith(\n    ownerCtx: Context,\n    persistence: SessionPersistence,\n    options: ResumeAgentOptions,\n  ): Promise<AgentHandle> {\n    const id = options.resumeSessionId\n    const published = (async () => {\n      // The load may outlive its owner: race it against caller cancellation,\n      // owner-fiber unload, and factory teardown so a never-settling backend\n      // cannot pin the identity.\n      const ownerAbort = new AbortController()\n      const unfollowOwner = ownerCtx.effect(() => () => {\n        ownerAbort.abort(new Error(`agent \"${id}\" setup aborted: owner disposed during setup`))","sourceCodeStart":638,"sourceCodeEnd":674,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/core/agent-loop/src/index.ts#L638-L674","documentation":"Error \"cannot resume: session persistence is not configured (load a dsh-session-persistence backend)\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/core/agent-loop/src/index.ts:656 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Load a dsh-session-persistence backend plugin before resuming a session."],"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"}