stablyai/orca · error · JiraSummaryLookupError
auth
auth
Error message
jira_summary_lookup:auth
What it means
Thrown by getIssueSummary at the start when getClients(siteId) itself throws. This wraps the underlying error as a JiraSummaryLookupError with code 'auth', because getClients throws when credentials cannot be loaded or decrypted for the site. The .code property and the 'jira_summary_lookup:auth' message prefix let callers discriminate it from other lookup outcomes.
Source
Thrown at src/main/jira/issues.ts:679
return mapped
} catch (error) {
console.warn('[jira] getIssue media load failed:', error)
return mapJiraIssue(entry.site, issue)
}
}
return null
}
export async function getIssueSummary(
key: string,
siteId: string,
signal?: AbortSignal
): Promise<JiraIssue | null> {
let entries: JiraClientForSite[]
try {
entries = getClients(siteId)
} catch (error) {
throw new JiraSummaryLookupError('auth', error)
}
const entry = entries.find((candidate) => candidate.site.id === siteId)
if (!entry) {
throw new JiraSummaryLookupError('disconnected')
}
return withJiraDeadline(signal, ISSUE_SUMMARY_TIMEOUT_MS, async (requestSignal) => {
await acquire(requestSignal)
try {
const params = new URLSearchParams({ fields: ISSUE_SUMMARY_FIELDS.join(',') })
const issue = await settleJiraSummaryRead(
jiraRequest<JiraRecord>(
entry,
`${apiBasePath(entry.site)}/issue/${encodeURIComponent(key)}?${params.toString()}`,
{ signal: requestSignal }
),
requestSignal
)View on GitHub (pinned to 1136503c6a)
Solutions
- Reconnect the Jira site to re-store fresh credentials.
- Verify the site entry in the Jira site file is intact and the encryption key is available.
- Check getClients' underlying error (passed as cause) for decryption details.
- Catch via getJiraSummaryLookupErrorCode(error) === 'auth' and prompt re-login.
Example fix
// before
try { await getIssueSummary(key, siteId) } catch (e) { /* ? */ }
// after
try {
await getIssueSummary(key, siteId)
} catch (e) {
if (getJiraSummaryLookupErrorCode(e) === 'auth') await promptJiraReconnect(siteId)
else throw e
} Defensive patterns
Strategy: try-catch
Validate before calling
try { getClients(siteId) } catch { await promptJiraReconnect(siteId); return } Type guard
function isJiraSummaryAuthError(e: unknown): boolean {
return getJiraSummaryLookupErrorCode(e) === 'auth'
} Try / catch
try { return await getIssueSummary(key, siteId, signal) }
catch (e) {
if (getJiraSummaryLookupErrorCode(e) === 'auth') { await reconnectJira(siteId); return getIssueSummary(key, siteId, signal) }
throw e
} Prevention
- Validate the Jira site credentials load before requesting summaries.
- Handle code 'auth' with a reconnect prompt, not a generic retry.
- Watch for key/encryption changes that break token decryption.
When it happens
Trigger: The stored Jira access token for the site failed to decrypt (key rotation, corrupted site file), or the site configuration is invalid. getClients raises before any HTTP call is made, so this is purely a local credential/config failure.
Common situations: OS keychain/cryptographic key changed across machines or after OS update. Site file manually edited. Token expired and refresh failed during client construction.
Related errors
- Could not decrypt saved ${service} credential. Approve Keych
- Jira attachment URL must use the configured site origin.
- disconnected
- not-found
- read-failed
AI-assisted analysis of stablyai/orca@1136503c6a (2026-08-12).
Data as JSON: /api/errors/a568e678daaef364.
Report an issue: GitHub.