deepseek-ai/deepseek-harness · error · Error
background jobs unavailable: no job controller serves this a
Error message
background jobs unavailable: no job controller serves this agent (load @deepseek-ai/dsh-tool-jobs in its composition)
What it means
Error "background jobs unavailable: no job controller serves this agent (load @deepseek-ai/dsh-tool-jobs in its composition)" thrown in deepseek-ai/deepseek-harness.
Source
Thrown at packages/jobs/jobs-local/src/index.ts:133
*/
private readonly layers = new ScopedLayers<JobLayer>(() => new JobLayer(), () => {})
private listenersClosed = false
/** Owner agents with attached scope cleanup, mapped to the exact disposer. */
private ownerCleanups = new Map<Agent, () => Promise<void> | void>()
/** Service context used by detached settlement continuations and teardown. */
private readonly selfCtx: Context
constructor(ctx: Context, config: Config) {
super(ctx)
// Schemastery validates and fills the default before constructing the service.
this.maxConcurrentJobsPerOwner = (config as Required<Config>).maxConcurrentJobsPerOwner
this.selfCtx = ctx
ctx.effect(() => () => this.disposeAll(), 'jobs teardown')
}
start(spec: JobStart): JobId {
if (!this.servesOwner(spec.owner)) {
throw new Error('background jobs unavailable: no job controller serves this agent (load @deepseek-ai/dsh-tool-jobs in its composition)')
}
if (spec.kind.length === 0) throw new Error('invalid job kind: expected a non-empty string')
if (spec.label.length === 0) throw new Error('invalid job label: expected a non-empty string')
if (spec.outputLimitBytes !== undefined
&& (!Number.isSafeInteger(spec.outputLimitBytes) || spec.outputLimitBytes <= 0)) {
throw new Error(`invalid outputLimitBytes: expected a positive safe integer, got ${JSON.stringify(spec.outputLimitBytes)}`)
}
if (spec.owner !== undefined) this.ensureOwnerCleanup(spec.owner)
const active = this.activeTaskCount(spec.owner)
if (active >= this.maxConcurrentJobsPerOwner) {
throw new Error(
`background job limit reached for this owner (limit: ${this.maxConcurrentJobsPerOwner}); use job_kill to stop an unneeded job, wait for it to finish, then retry`,
)
}
const hooks = spec.run()
const count = (this.counters.get(spec.kind) ?? 0) + 1View on GitHub (pinned to b150a551b8)
Solutions
- Load @deepseek-ai/dsh-tool-jobs in the agent's composition.
When it happens
Trigger: Thrown at packages/jobs/jobs-local/src/index.ts:133 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/55fdca49d40a0125.
Report an issue: GitHub.