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.
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
# Resume most recent session kiro-cli chat --resume # Interactive picker kiro-cli chat --resume-picker # List all sessions kiro-cli chat --list-sessions # Delete session kiro-cli chat --delete-session <SESSION_ID>
# Resume session (interactive) /chat resume # Save to file /chat save <path> # Load from file /chat load <path>
Use custom scripts to save/load sessions from version control, cloud storage, or databases.
/chat save-via-script <script-path>
Script receives session JSON via stdin.
Example: Save to Git Notes
#!/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
/chat load-via-script <script-path>
Script outputs session JSON to stdout.
Example: Load from Git Notes
#!/bin/bash COMMIT=$(git rev-parse HEAD) git notes --ref=kiro/notes show "$COMMIT"
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)
kiro-cli chat --resume
Continues most recent conversation.
kiro-cli chat --resume-picker
Shows list of sessions to choose from.
/chat save backup.json
Exports current session to file.
# 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
Symptom: "No saved chat sessions"
Cause: No sessions in current directory
Solution: Sessions are per-directory. Navigate to correct directory.
Symptom: Script exits with error
Cause: Script returned non-zero exit code
Solution: Test script manually. Ensure it exits 0 on success.
Symptom: Can't load session
Cause: Script didn't output valid JSON
Solution: Test script outputs valid session JSON to stdout.
Storage: SQLite database in ~/.kiro/
Scope: Sessions keyed by directory path
Auto-save: After every conversation turn
Script interface:
Session Management