deepseek-ai/deepseek-harness · error
conversation.updateQueue failed: ${result.error.code}: ${res
Error message
conversation.updateQueue failed: ${result.error.code}: ${result.error.message} What it means
updateQueue() applies a queue action (steer, cancel, remove, and kin) via session.updateQueue. Non-ok results throw 'conversation.updateQueue failed' — with one deliberate swallow: a steer answered by 'steer-unavailable' or 'queue-item-not-found' returns silently, because the item finished before the steer landed and that outcome is equivalent.
Source
Thrown at packages/client/ui-conversation/src/client/service.ts:294
void entry.pending.then((url) => {
if (!this.createdImageUrls.delete(url)) return
revokePreview(url)
}, () => {
// A failed or invalidated load owns no object URL.
})
}
}
/** Apply one operation to a pending queue occurrence. */
async updateQueue(itemId: QueueItemId, action: QueueAction): Promise<void> {
const session = this.scopedSession('updateQueue')
const result = await session.updateQueue(itemId, action)
if (!result.ok) {
if (
action.kind === 'steer'
&& (result.error.code === 'steer-unavailable' || result.error.code === 'queue-item-not-found')
) return
throw new Error(`conversation.updateQueue failed: ${result.error.code}: ${result.error.message}`)
}
}
/** Cancel the scoped session's in-flight turn while preserving Queue (failures land in promptError and reject, as in send). */
async cancel(): Promise<void> {
const session = this.scopedSession('cancel')
const result = await session.cancel()
if (!result.ok) throw new Error(`conversation.cancel failed: ${result.error.code}: ${result.error.message}`)
}
/** Pull one older history page for the scoped Session. */
async loadOlder(): Promise<void> {
await this.scopedSession('loadOlder').loadOlder()
}
/** Resolve the caller scope's session face or throw on root contexts. */
private scopedSession(op: string): SessionFace {
const id = this.scopeId(op)View on GitHub (pinned to b150a551b8)
Solutions
- Refresh the queue from the live session state and re-render before retrying
- Treat item-not-found as benign — the work already settled
- Inspect the embedded error.code for genuine host refusals and act on that code
Defensive patterns
Strategy: try-catch
Validate before calling
const item = queueSnapshot.items.find(i => i.id === itemId) if (item === undefined) return // already settled
Try / catch
try {
await conversation.updateQueue(itemId, action)
} catch (error) {
if (isItemNotFound(error)) refreshQueue() // benign race
else throw error
} Prevention
- Drive queue buttons from the latest frame, not a cached one
- Treat item-gone outcomes as success for cancel and remove intents
When it happens
Trigger: Cancelling or removing a queue item that already completed on the host (queue-item-not-found), or any other host-side refusal or transport failure; steering races are absorbed by design and never reach this throw.
Common situations: A queue button rendered from a stale frame being clicked after the item settled; the queue mutated by another surface first; connection drop mid-action.
Related errors
- approval response rejected: ${receipt.reason}
- conversation.sendSession: one or more draft images are no lo
- conversation.cancel failed: ${result.error.code}: ${result.e
- permission switch failed: ${result.error.code}: ${result.err
- context-not-found
AI-assisted analysis of deepseek-ai/deepseek-harness@b150a551b8 (2026-08-24).
Data as JSON: /api/errors/ff5a924bcde8c741.
Report an issue: GitHub.