Overview
Every time you save changes to an agent — skills, CLAUDE.md, tool permissions, or MCP assignments — SlackHive automatically creates a snapshot of the agent’s full state. The History tab on each agent’s detail page lets you browse these snapshots, view line-level diffs, and restore any previous version. This gives you a safety net for experimentation: try a new persona, restructure skills, or tighten permissions, and roll back immediately if something breaks.What gets snapshotted
Each snapshot captures the full agent state at the time of save:CLAUDE.mdcontent- All skill files (content and metadata)
- Tool permissions (allowlist and denylist)
- Assigned MCP servers
Viewing history
- Open an agent from the dashboard
- Click the History tab
Reading a diff
Each snapshot shows a line-level diff against the previous version. Lines are color-coded:- Green (additions) — lines added in this snapshot
- Red (deletions) — lines removed compared to the previous snapshot
- Unchanged lines are shown for context
Restoring a version
To restore an agent to a previous state:- Open the snapshot you want to restore
- Click Restore this version
- Confirm the restore
Snapshot retention
SlackHive keeps up to 10 snapshots per agent. When a new snapshot would exceed the cap, the oldest snapshot is automatically deleted. If you need to preserve a specific version permanently, export the agent configuration (copy the CLAUDE.md and skill content) before it ages out of the snapshot cap.Conversation history
In addition to configuration history, each Slack thread maintains its own conversation context. Each Slack thread (identified byuserId + channelId + threadTs) maps to a persistent Claude Code session.
Session context survives runner restarts: the Claude session ID is stored in Postgres and reloaded when the runner starts. When an agent receives a message in an existing thread, it resumes the same Claude session — maintaining full conversation context including tool results, intermediate outputs, and prior exchanges.
Sessions expire after 30 minutes of inactivity. The runner runs a cleanup job every 10 minutes that removes stale sessions from both the in-memory cache and the database. After expiry, the next message in that thread starts a fresh session (though the agent still has all memories from previous conversations).