{"record":{"id":"6f64422764acb921","repo":"deepseek-ai/deepseek-harness","slug":"authorization-the-interaction-surface-failed-to-r","errorCode":null,"errorMessage":"authorization: the interaction surface failed to render a notice","messagePattern":"authorization: the interaction surface failed to render a notice","errorType":"console","errorClass":null,"httpStatus":null,"severity":"error","filePath":"packages/credentials/authorization/src/index.ts","lineNumber":396,"sourceCode":"    // it happened *now* — on a re-auth the record already exists, so presence\n    // alone would let a flow that wrote nothing report the stale credential\n    // as freshly authorized.\n    const observed = { declined: false, committed: false }\n    const unwatch = this.ctx.on('credentials/record-updated', (key: CredentialKey) => {\n      if (key === flow.key) observed.committed = true\n    })\n    try {\n      const running = flow.run({\n        method,\n        signal,\n        notify: (notice) => {\n          try {\n            interaction.notify(notice)\n          } catch (error) {\n            // Fire-and-forget is held at the seam: a surface that cannot\n            // render a notice (a page whose connection just closed) loses the\n            // notice, never the attempt.\n            this.ctx.logger.warn('authorization: the interaction surface failed to render a notice')\n            this.ctx.logger.warn(error)\n          }\n        },\n        prompt: prompt => interaction.prompt(prompt).catch((error: unknown) => {\n          if (error instanceof AuthorizationDeclinedError) observed.declined = true\n          throw error\n        }),\n      })\n      try {\n        if (await Promise.race([running.then(() => 'ran' as const), withdrawn]) === 'withdrawn') {\n          // Nothing awaits the orphan any more, so its eventual failure has to be\n          // marked handled or it would take down the process.\n          void running.catch(() => { this.ctx.logger.debug('authorization: withdrawn flow failed after the fact') })\n          return { status: 'cancelled' }\n        }\n      } catch (error) {\n        // A withdrawn attempt and a declined prompt are outcomes, not\n        // failures: the human said no, or closed the page. Anything else is","sourceCodeStart":378,"sourceCodeEnd":414,"githubUrl":"https://github.com/deepseek-ai/deepseek-harness/blob/b150a551b8d465e31e418e1b2eaf5e79bbb7d28e/packages/credentials/authorization/src/index.ts#L378-L414","documentation":"Error \"authorization: the interaction surface failed to render a notice\" thrown in deepseek-ai/deepseek-harness.","triggerScenarios":"Thrown at packages/credentials/authorization/src/index.ts:396 when the library encounters an invalid state.","commonSituations":"See trigger scenarios.","solutions":["Check that the interaction/approval UI plugin is loaded; restart the session to restore the authorization notice surface."],"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"}