Loading image...Kiro

Product

  • About Kiro
  • IDE
  • CLI
  • Web
  • Mobile
  • Crew
  • Pricing
  • Downloads

For

  • Enterprise
  • Startups
  • Students

Community

  • Overview
  • Ambassadors
  • Discord
  • Events
  • Powers
  • Shop
  • Showcase

Resources

  • Docs
  • Blog
  • Changelog
  • FAQs
  • Report a bug
  • Suggest an idea
  • Billing support

Social

Site TermsLicenseResponsible AI PolicyLegalPrivacy PolicyCookie Preferences
Loading image...Kiro
  • Enterprise
  • Pricing
  • Docs
SIGN INDOWNLOADS
Loading image...Kiro

Get Started

InstallationAuthenticationYour first project

Models

OverviewAvailable modelsReasoning effort

Features

How Kiro works
Specs
Steering
Hooks
MCP
Permissions
Custom agents
Agent Skills
Powers
Cloud sessionsCompactionKiroignoreCheckpoints and rewind
Built-in tools
Configuration scopes

IDE 1.x

What's new in 1.0
Setup & First Run
Editor
Chat
Experimental
Troubleshooting0.x reference

CLI

What's new in 3.0
Setup & First Run
Terminal UI
Chat
Session management
Goal
Queue steering
In-session settings
Prompts
File references
Context management
Responding to messages
Working with Git
Images
Custom diff tools
Voice modeHeadless modeACPAuto complete
Experimental
2.x reference

Crew

Quick startInstallationRunning 24/7
Chat
Agent Capabilities
Features
Interfaces
Apps
ConfigurationSecurityTroubleshooting

Web - Preview

Setup & First RunIdentity Center
Connect your repositories
Working with the agent
Autonomous modeAutomations
Sandbox

Mobile - Preview

Overview

Commands and Reference

CLI commandsSlash commandsBuilt-in toolsExit codesSettings

Billing

OverviewManaging your subscriptionUpgrading your planDowngrading your planCancelling your planPurchasing add-on creditsManaging your paymentsManaging usage notificationsManaging your taxesContacting billing supportDeleting your accountRelated questions

Enterprise

ConceptsOnboarding quickstart
Connecting your identity provider
Subscribe your teamManage subscriptions
Governance
Monitor and track
SettingsManaged updatesBillingIAMSupported regions

Privacy and Security

OverviewData protectionCode referencesCompliance validationInfrastructure securityIAM permissionsFirewalls, proxies, and data perimetersVPC endpoints (AWS PrivateLink)

Guides

Overview
Language support
Learn by playing

Migration

Migrating from Q DeveloperMigrating from VSCodeUpgrading from Q CLI
  1. Docs
  2. CLI
  3. Chat
  4. Session management

Session Management


Kiro CLI automatically saves all chat sessions on every conversation turn. Sessions are stored per-directory in the database, allowing you to resume from any previous session, export to files, or integrate with custom storage solutions.

Auto-save

Automatic: Every conversation turn saved to database
Scope: Per-directory (each project has own sessions)
Storage: Local database (~/.kiro/)
Session ID: UUID for each session

Managing sessions

From command line

bash
# Resume most recent session kiro-cli chat --resume # Interactive picker kiro-cli chat --resume-picker # Resume a specific session by ID kiro-cli chat --resume-id <SESSION_ID> # List all sessions kiro-cli chat --list-sessions # Delete session kiro-cli chat --delete-session <SESSION_ID>

From chat

bash
# Start a fresh conversation (saves current session automatically) /chat new # Start a fresh conversation with an initial prompt /chat new how do I set up a React project # Resume session (interactive) /chat resume # Print the current session ID /session-id # Save to file /chat save <path> # Load from file /chat load <path>
Resume hint on exit

When you exit a session, Kiro CLI prints the session ID along with the command to resume it (kiro-cli chat --resume-id <ID>). Use /session-id mid-session to print the same ID on demand.

File extension

The .json extension is optional when loading sessions.

Cloud sessions

Sessions started with --cloud run in a managed cloud sandbox and are stored in your account's cloud session store rather than the local per-directory database — see Cloud sessions. They appear alongside local sessions in --list-sessions and the in-session /sessions picker, with columns showing each session's environment and status.

--resume-id detects a cloud session ID automatically, so no --cloud flag is needed to resume — and because the session lives in the cloud, you can resume it from any machine:

bash
kiro-cli --resume-id <SESSION_ID>

/chat save and /chat load operate on the local session archive and aren't available in cloud sessions.

Custom storage via scripts

Use custom scripts to save/load sessions from version control, cloud storage, or databases.

Save via script

bash
/chat save-via-script <script-path>

Script receives session JSON via stdin.

Example: Save to Git Notes

bash
#!/bin/bash COMMIT=$(git rev-parse HEAD) TEMP=$(mktemp) cat > "$TEMP" git notes --ref=kiro/notes add -F "$TEMP" "$COMMIT" --force rm "$TEMP" echo "Saved to commit ${COMMIT:0:8}" >&2

Load via script

bash
/chat load-via-script <script-path>

Script outputs session JSON to stdout.

Example: Load from Git Notes

bash
#!/bin/bash COMMIT=$(git rev-parse HEAD) git notes --ref=kiro/notes show "$COMMIT"

Session storage

Database: Sessions auto-saved per-directory
Files: Manual export via /chat save
Custom: Script-based integration

Session ID: UUID format (e.g., f2946a26-3735-4b08-8d05-c928010302d5)

Examples

Resume last session

bash
kiro-cli chat --resume

Continues most recent conversation.

Pick session interactively

bash
kiro-cli chat --resume-picker

Shows list of sessions to choose from.

Export to file

/chat save backup.json

Exports current session to file.

Version control integration

bash
# Save to git notes /chat save-via-script ./scripts/save-to-git.sh # Load from git notes /chat load-via-script ./scripts/load-from-git.sh

Troubleshooting

Session is active in another process

Symptom: "Failed to start session: Session is active in another process (PID XXXXX)"
Cause: You're trying to resume a session that's already open in another terminal window or tab.
Solution: Sessions can only be active in one process at a time to prevent conversation corruption. You have two options:

  1. Close the other terminal that has the session open, then resume.
  2. Fork the session into a new one using /chat save in the original terminal, then /chat load in the new terminal. This creates a separate copy you can use independently.
Why single-process?

Each session maintains a sequential conversation history. Allowing two processes to write to the same session simultaneously would corrupt the message ordering and could cause data loss.

No sessions to resume

Symptom: "No saved chat sessions"
Cause: No sessions in current directory
Solution: Sessions are per-directory. Navigate to correct directory.

Script save fails

Symptom: Script exits with error
Cause: Script returned non-zero exit code
Solution: Test script manually. Ensure it exits 0 on success.

Script load fails

Symptom: Can't load session
Cause: Script didn't output valid JSON
Solution: Test script outputs valid session JSON to stdout.

Limitations

  • Sessions can only be active in one process at a time (no multi-window sharing)
  • Sessions stored per-directory
  • Auto-save to database only (not files)
  • Session IDs are UUIDs (not human-readable)
  • Local sessions don't sync across machines (use scripts for custom storage); cloud sessions are stored in the cloud and resume from anywhere
  • No session search by content

Technical details

Storage: SQLite database in ~/.kiro/

Scope: Sessions keyed by directory path

Auto-save: After every conversation turn

Script interface:

  • Save: JSON via stdin, exit 0 on success
  • Load: JSON via stdout, exit 0 on success

Next steps

  • Learn about Chat Commands
  • See Interactive Chat Mode
  • Review Context Management
  • Use Rewind to fork a conversation at an earlier turn
Page updated: August 11, 2026
Chat
Goal