google-gemini/gemini-cli · error
Failed to find session "${trimmedResumeArg}": ${error instan
Error message
Failed to find session "${trimmedResumeArg}": ${error instanceof Error ? error.message : String(error)} What it means
Thrown when resuming a session by identifier and this.findSession(trimmedResumeArg) throws an error that is NOT a SessionError (those are rethrown unchanged). It wraps unexpected/low-level errors (filesystem, JSON parse, permission) with the identifier that was requested for diagnosis.
Source
Thrown at packages/cli/src/utils/sessionUtils.ts:527
}
// Sort by startTime (oldest first, so newest sessions get highest numbers)
sessions.sort(
(a, b) =>
new Date(a.startTime).getTime() - new Date(b.startTime).getTime(),
);
selectedSession = sessions[sessions.length - 1];
} else {
try {
selectedSession = await this.findSession(trimmedResumeArg);
} catch (error) {
// SessionError already has detailed messages - just rethrow
if (error instanceof SessionError) {
throw error;
}
// Wrap unexpected errors with context
throw new Error(
`Failed to find session "${trimmedResumeArg}": ${error instanceof Error ? error.message : String(error)}`,
);
}
}
return this.selectSession(selectedSession);
}
/**
* Loads session data for a selected session.
*/
private async selectSession(
sessionInfo: SessionInfo,
): Promise<SessionSelectionResult> {
const chatsDir = path.join(this.storage.getProjectTempDir(), 'chats');
const sessionPath = path.join(chatsDir, sessionInfo.fileName);
try {View on GitHub (pinned to 5024443c72)
Solutions
- Read the wrapped error message (after the colon) to identify the underlying cause (ENOENT, EACCES, SyntaxError).
- Verify the chats directory (storage.getProjectTempDir()/chats) is readable and not corrupted.
- If a specific session file is corrupt, remove or restore it, then retry the resume.
- If the identifier is wrong, double-check it against the session list (`--list-sessions` or equivalent).
Defensive patterns
Strategy: try-catch
Validate before calling
// Validate the identifier format and chats dir accessibility before resuming.
const fs = require('fs');
const chatsDir = path.join(storage.getProjectTempDir(), 'chats');
fs.accessSync(chatsDir, fs.constants.R_OK); Try / catch
try {
selectedSession = await manager.findSession(id);
} catch (e) {
if (e instanceof SessionError) throw e; // already detailed
throw new Error(`Failed to find session '${id}': ${e.message}`);
} Prevention
- Ensure the chats directory is readable before listing sessions.
- Treat SessionError distinctly from wrapped errors in your handler.
When it happens
Trigger: findSession throws something other than SessionError — e.g. an FS error reading the chats directory, an unexpected JSON.parse failure, or a permission error. The wrapper at sessionUtils.ts:527 catches and rethrows with context.
Common situations: Chats directory is corrupted or has permission issues. Disk error while listing session files. A bug in findSession producing a non-SessionError. Race where the session file is deleted between listing and reading.
Related errors
- Failed to load session data
- Failed to load session ${sessionInfo.id}: ${error instanceof
- Workspace path ${resolvedPath} does not exist
- Workspace path ${resolvedPath} is not a directory
- tar.c command failed to create ${tmpArchiveFile}
AI-assisted analysis of google-gemini/gemini-cli@5024443c72 (2026-08-12).
Data as JSON: /api/errors/9d0267c58bd1b16d.
Report an issue: GitHub.