Skip to content

fix(executor): validate session files exist before attempting resume#305

Merged
bborn merged 1 commit intomainfrom
fix/gemini-session-resume-validation
Jan 31, 2026
Merged

fix(executor): validate session files exist before attempting resume#305
bborn merged 1 commit intomainfrom
fix/gemini-session-resume-validation

Conversation

@bborn
Copy link
Copy Markdown
Owner

@bborn bborn commented Jan 31, 2026

Summary

  • Fixes ENOENT errors when session files are deleted/cleaned up externally
  • Adds validation functions for Claude, Codex, and Gemini session files
  • Updates all resume code paths to validate before using --resume flag
  • Clears stale session IDs from database when session file is missing

Context

PR #300 added session resume support for Gemini/Codex using --resume <sessionID>. However, if the session file was deleted (manually, by CLI cleanup, or never created), the CLI would fail with:

API Error: ENOENT: no such file or directory, open '~/.gemini/tmp/<hash>/chats/<session>.json'

This fix validates that the session file exists before attempting to resume. If missing, it logs a message, clears the stale session ID from the DB, and starts fresh instead.

Test plan

  • go build ./... compiles successfully
  • go test ./internal/executor/... passes
  • Manual test: delete a Gemini/Codex/Claude session file, then resume task - should start fresh without ENOENT

🤖 Generated with Claude Code

When resuming a session with --resume, validate that the session file
actually exists before passing the flag to the CLI. This prevents
ENOENT errors when session files are deleted or cleaned up externally.

Changes:
- Add ClaudeSessionExists() to validate Claude session files
- Add codexSessionExists() to validate Codex session files
- Add geminiSessionExists() to validate Gemini session files
- Update all resume code paths to validate before using --resume:
  - runClaude, runClaudeResume
  - resumeClaudeDangerous, resumeClaudeSafe
  - runCodex (Codex executor)
  - runGemini (Gemini executor)
  - resumeCodexWithMode, resumeGeminiWithMode
- Clear stale session IDs from DB when session file is missing

Fixes issue where Gemini/Codex/Claude would fail with ENOENT when
trying to resume a session whose file no longer exists.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
@bborn bborn merged commit c18e782 into main Jan 31, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant