stablyai/orca · error · LinearWriteFailure
unconfirmed
unconfirmed
Error message
Issue was created but could not be retrieved
What it means
Thrown after createIssue succeeded (success===true) but the returned result.issue promise resolved to a value with no id, wrapped by confirmLinearWrite. Kind is 'unconfirmed', meaning the issue likely exists on Linear but the create response did not yield a usable handle.
Source
Thrown at src/main/linear/issues.ts:1204
...(description ? { description } : {}),
...(options.parentId ? { parentId: options.parentId } : {}),
...(options.projectId ? { projectId: options.projectId } : {}),
...(options.stateId ? { stateId: options.stateId } : {}),
...(options.assigneeId !== undefined ? { assigneeId: options.assigneeId } : {}),
...(options.priority !== undefined ? { priority: options.priority } : {}),
...(options.estimate !== undefined ? { estimate: options.estimate } : {}),
...(options.dueDate !== undefined ? { dueDate: options.dueDate } : {}),
...(options.labelIds !== undefined ? { labelIds: options.labelIds } : {})
})
if (!result.success) {
throw new LinearWriteFailure('failed', 'Linear create failed')
}
const issue = await confirmLinearWrite(
'Issue was created but could not be retrieved',
async () => result.issue
)
if (!issue?.id) {
throw new LinearWriteFailure('unconfirmed', 'Issue was created but could not be retrieved')
}
return confirmLinearWrite('Issue was created but could not be retrieved', () =>
getCreatedIssueRecord(issue.id, client)
)
})
}
async function getCreatedIssueRecord(
issueId: string,
client: LinearClient
): Promise<LinearIssueWriteRecord> {
const result = await client.client.rawRequest<LinearIssueByUuidResponse, LinearRawVariables>(
ISSUE_BY_UUID_QUERY,
{ id: issueId }
)
const record = result.data?.issue ?? null
if (!record) {
throw new LinearWriteFailure('unconfirmed', 'Issue was created but could not be retrieved')View on GitHub (pinned to 1136503c6a)
Solutions
- Treat as created-but-unconfirmed: query getCreatedIssueRecord by any returned id or list newest issues to locate it before reporting failure.
- Upgrade/reload the Linear SDK and retry the readback only.
- Avoid double-creating; search by title/team before issuing another create.
Example fix
// before
const rec = await createIssueForAgent(teamId, { title }, workspaceId)
// after
try {
return await createIssueForAgent(teamId, { title }, workspaceId)
} catch (e) {
if (e instanceof LinearWriteFailure && e.kind === 'unconfirmed') {
return await recoverByListingNewest(teamId)
}
throw e
} Defensive patterns
Strategy: retry
Type guard
function isUnconfirmed(e: unknown): boolean {
return e instanceof LinearWriteFailure && e.kind === 'unconfirmed'
} Try / catch
try { return await createIssueForAgent(teamId, opts, workspaceId, { signal }) }
catch (e) {
if (isUnconfirmed(e)) return await recoverNewestIssue(teamId, opts.title, workspaceId)
throw e
} Prevention
- Never re-create on an unconfirmed error; search for the resource first.
- Keep the title/team to locate a possibly-created issue.
- Log the unconfirmed id/cause for forensic recovery.
When it happens
Trigger: Linear's createIssue reported success yet the issue payload was null/undefined or lacked an id field; transient SDK serialization issue.
Common situations: Eventual-consistency or partial payload from Linear; an SDK version that does not eagerly hydrate the issue node.
Related errors
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/b8ab2269b827ac30.
Report an issue: GitHub.