deepseek-ai/deepseek-harness · error

subagent "${activation.childId}" activation teardown failed:

Error message

subagent "${activation.childId}" activation teardown failed: ${errorChain(error)}

What it means

Error "subagent "${activation.childId}" activation teardown failed: ${errorChain(error)}" thrown in deepseek-ai/deepseek-harness.

Source

Thrown at packages/subagent/subagent/src/continuation.ts:1323

        // resident handle that this watcher is already about to tear down.
        const settling = await this.locks.run<SettlementAttempt>(activation.childId, () => {
          if (disposalOf(activation) !== undefined || this.stateOf(activation) !== 'settled') {
            return Promise.resolve({ settling: false })
          }
          // `dispose()` assigns its memoized transaction synchronously, so
          // admission is closed before this critical section releases.
          return Promise.resolve({ settling: true, done: this.dispose(activation) })
        })
        if (!settling.settling) {
          // Still running, or waiting on descendants: re-observe after the next
          // accepted message or ownership release.
          if (activation.handle.agent.status !== 'running') await poked
          continue
        }
        try {
          await settling.done
        } catch (error: unknown) {
          this.ctx.logger.warn(
            `subagent "${activation.childId}" activation teardown failed: ${errorChain(error)}`,
          )
        }
        return
      }
    })()
  }

  /**
   * Stop one Activation immediately, then release it child-first. The memoized
   * transaction is installed before cancellation or recursive callbacks, so
   * admission and reentrant teardown converge on the same owner.
   *
   * The final session flush is best effort and never prevents handle disposal
   * or ownership release, because retaining a child would permanently pin its
   * ancestors in `waiting`.
   * @param activation - the residency epoch to stop and release.
   * @returns the one disposal transaction owned by this Activation.

View on GitHub (pinned to b150a551b8)

Solutions

  1. Manually dispose the leaked child activation resources and investigate the teardown error chain before reusing the child id.

When it happens

Trigger: Thrown at packages/subagent/subagent/src/continuation.ts:1323 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/9c35f107d45e2014. Report an issue: GitHub.