deepseek-ai/deepseek-harness · error
subagent: ${name} listener rejected: ${renderThrown(error)}
Error message
subagent: ${name} listener rejected: ${renderThrown(error)} What it means
Error "subagent: ${name} listener rejected: ${renderThrown(error)}" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/subagent/subagent/src/lifecycle.ts:116
* @returns the emitter both observers and the provider registry publish through.
*/
export function createLifecycleEmitter(
ctx: Context,
carrier: (parent: Agent) => object,
): LifecycleEmitter {
return (
name: 'subagent/start' | 'subagent/end' | 'subagent/provider-removed',
info: SubagentRunInfo | SubagentRunEndInfo | string,
parent?: Agent,
): void => {
const dispatchArgs: unknown[] = parent === undefined
? [name, info]
: [carrier(parent), name, info]
for (const callback of ctx.events.dispatch('emit', dispatchArgs)) {
try {
const returned: unknown = callback(info)
void Promise.resolve(returned).catch((error: unknown) => {
ctx.logger.warn(`subagent: ${name} listener rejected: ${renderThrown(error)}`)
})
} catch (error: unknown) {
ctx.logger.warn(`subagent: ${name} listener threw: ${renderThrown(error)}`)
}
}
}
}
/**
* Emit the start/end lifecycle pair for one accepted one-shot run.
* @param emit - the contained lifecycle emitter.
* @param provider - the provider that established the run.
* @param parent - the delegating parent keying scoped dispatch.
* @param run - the published run whose settlement closes the pair.
* @returns the same run, unchanged.
*/
export function observeRun(
emit: LifecycleEmitter,View on GitHub (pinned to b150a551b8)
Solutions
- Fix the async subagent lifecycle listener that rejected so it handles the event without throwing.
When it happens
Trigger: Thrown at packages/subagent/subagent/src/lifecycle.ts:116 when the library encounters an invalid state.
Common situations: See trigger scenarios.
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/17a807c8a0141169.
Report an issue: GitHub.