Skip to main content

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.md content
  • All skill files (content and metadata)
  • Tool permissions (allowlist and denylist)
  • Assigned MCP servers
Slack credentials, agent name, slug, and description are not included in snapshots (they are managed separately as live fields).

Viewing history

  1. Open an agent from the dashboard
  2. Click the History tab
You’ll see a chronological list of snapshots with timestamps. Click any snapshot to expand it.

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:
  1. Open the snapshot you want to restore
  2. Click Restore this version
  3. Confirm the restore
The runner hot-reloads the agent within seconds of the restore. The restored state becomes the current agent configuration and is itself snapshotted as a new entry in the history (so the restore is reversible).

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 by userId + 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).