Skip to main content

Session Resume

PraisonAI automatically resumes conversations when you use the same session_id. When SessionConfig.mirror_runtime_state=True, persisted sessions also restore runtime_state alongside messages — useful for replaying tool call IDs when handing off between native and plugin runtimes. See Session Runtime State.
Tool calls are preserved on resume. The default (zero-config) JSON session store persists assistant tool-call turns and role="tool" result turns as of PraisonAI PR #3099. Resuming with the same session_id (or via praisonai run --continue / --session <id> / session resume <id>) reconstructs the exact message list the model saw before — including tool calls. Old text-only session files stay compatible; the new tool_calls / tool_call_id fields are only written when a message actually has them.
Resume works for team runs launched from a YAML file too. praisonai run agents.yaml --continue / --session <id> restores per-agent chat history and shared team state, so each agent replays its earlier context before the new prompt. See YAML / Team Session Continuity.
The model is preserved across resumes. With no explicit --model, resume runs on the model the session was recorded with — not your current default. See Session Resume — Model Restoration.
Interactive resume redraws your conversation on screen. In praisonai code, /continue and session resume replay the last 20 turns through the same renderer live turns use — including tool-call surfaces — so scrollback shows what was actually said. See Session Visual Replay.

How It Works

Session ID Strategies

User-Based Sessions

Conversation-Based Sessions

Auto-Generated (Default)

If you don’t provide a session_id, one is auto-generated:

CLI Resume

Concurrent Writes

Multiple bot workers writing to the same session_id are safe — history saves use a single locked atomic write under the hood, so no worker sees an empty history mid-update. This applies to:
  • Messaging bots (praisonai bot telegram, discord, slack, whatsapp)
  • Multi-process deployments resuming the same session key
  • Managed agents streaming chunks back to the user
You do not need to add a custom lock around agent.start().

Visual Replay on /continue

In interactive praisonai code, typing /continue visually replays the restored conversation through the live renderer — you see the earlier user / assistant turns and tool activity, not a one-line “Restored N messages” summary. This lands with PraisonAI PR #3965.
Replay is bounded to the last N turns — older content is summarised as … <N> earlier turns so a long history doesn’t flood the terminal. /continue loads the full stored history (not a 50-message tail), so the “earlier turns” count reflects the true total.
/continue clears the on-screen message list before replay, so repeated /continue calls no longer duplicate or retain stale turns. The default _run_simple fallback (no prompt_toolkit) also renders restored user + assistant turns, not just system lines.

Best Practices

  1. Consistent session_ids - Same ID = same conversation thread
  2. User isolation - Include user_id in session_id for multi-user apps
  3. Persistent storage - Use PostgreSQL for production, SQLite for development