ruvnet / ruvnet/ruflo

Hive-Mind Session Resume Does Not Restore MCP Server State

Open
#900 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
TypeScript
Stars
72.7k
Forks
8.6k
Avg merge
2d 23h
Merged PRs (30d)
83

Description

# Bug Report: Hive-Mind Session Resume Does Not Restore MCP Server State

## Environment
- **claude-flow version**: 2.7.42 (alpha)
- **Node.js version**: v25.2.1
- **Platform**: macOS Darwin 25.1.0 (arm64)
- **Claude Code**: Latest

## Summary

When resuming a hive-mind session with `--claude` flag, the MCP server starts with empty in-memory state instead of loading the persisted session/swarm data from `.hive-mind/sessions/`. This causes all `mcp__claude-flow__*` tool calls to fail with "Swarm not found" errors, even though the CLI correctly shows the session as active.

## Steps to Reproduce

1. Create a hive-mind session:
```bash
claude-flow hive-mind spawn --objective "Test task" --workers 4 --claude
```

2. Work with the session, then pause (Ctrl+C)

3. Resume the session:
```bash
claude-flow hive-mind resume session-1765101696583-uqbb9abjt --claude
```

4. In the spawned Claude Code instance, try to use MCP tools:
```
mcp__claude-flow__swarm_status(swarmId: "swarm-1765101696582-fbc3nfj1p")
```

## Expected Behavior

The MCP server should load the persisted swarm state from `.hive-mind/sessions/` so that:
- `mcp__claude-flow__swarm_status` returns the active swarm info
- `mcp__claude-flow__memory_usage` retrieves stored collective memory
- All swarm coordination tools work with the resumed session

## Actual Behavior

```json
{
"success": false,
"error": "Swarm swarm-1765101696582-fbc3nfj1p not found",
"timestamp": "2025-12-08T10:34:05.020Z"
}
```

The CLI shows the session correctly:
```
claude-flow hive-mind status
# Shows: hive-1765101696578 with 5 agents, status: active
```

But MCP tools cannot find it because:
1. CLI stores state in `.hive-mind/sessions/` directory (JSON files)
2. MCP server maintains separate in-memory state
3. On resume, `--claude` only injects context into Claude's prompt, but doesn't initialize MCP server state

## Additional Issue: SQLite Module Incompatibility

The MCP server also fails to initialize the memory store due to native module version mismatch:

```
[ERROR] [memory-store] Failed to initialize: Error: The module
'/Users/aleksi/.npm/_npx/.../better_sqlite3.node'
was compiled against a different Node.js version using
NODE_MODULE_VERSION 137. This version of Node.js requires
NODE_MODULE_VERSION 141.
```

This occurs because:
- `npx claude-flow@alpha` caches the package with native modules compiled for an older Node.js
- User updates Node.js but the cached native module is stale

**Workaround**: `npm cache clean --force` and reinstall

## Proposed Solution

### Option A: MCP Server Loads State from Disk
On startup, MCP server should:
1. Check for active sessions in `.hive-mind/sessions/`
2. Load swarm state from checkpoint JSON files
3. Initialize in-memory state to match persisted state

### Option B: CLI Initializes MCP State on Resume
The `hive-mind resume --claude` command should:
1. After spawning Claude Code, send initialization commands to MCP
2. Use MCP tools to recreate the swarm with same ID/state
3. Populate memory namespace with persisted data

### Option C: Unified State Store
Replace separate CLI/MCP state stores with a single source of truth:
- Both CLI and MCP read/write to same SQLite database
- Use file locking for concurrent access
- MCP server watches for changes

## Files Involved

- `.hive-mind/sessions/session-*-auto-save-*.json` - Checkpoint data
- `.hive-mind/sessions/hive-mind-resume-*.txt` - Resume prompt templates
- `src/mcp/mcp-server.js` - MCP server (starts with empty state)
- `src/cli/` - CLI commands (manage `.hive-mind/sessions/`)

## Workaround

Currently, users must either:
1. Initialize a new swarm via MCP after resume (loses continuity)
2. Use only CLI commands, not MCP tools
3. Manually track progress outside of hive-mind (e.g., TODO.md file)

## Related Issues

- May be related to the general architecture of having separate CLI and MCP systems
- Similar to issues with multiple MCP server instances causing state confusion

Contributor guide

Open the contributing guide

Research direction

Reproduce the resume flow with `hive-mind resume --claude`, then read `src/mcp/mcp-server.js` and the relevant code under `src/cli/` alongside the checkpoint files in `.hive-mind/sessions/`. Compare the persisted session state with the MCP server's state and check the reported SQLite initialization failure. Done means a resumed session's MCP tools find its swarm and memory without requiring a new initialization.

Written by the indexing model from the issue text.

Assessment

Tech stack
sqlite, typescript
Domain
api, backend, cli
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.