Terminal Coding Agents
Usage
SpecStory CLI Usage
This page is a quick reference for: SpecStory CLI commands, flags, the files created in your project, configuration and debugging.
Tip
Most users start with specstory run <agent>, then use specstory sync for past sessions and specstory watch for background capture.
Commands
| Command | Description | Examples |
|---|---|---|
check | Check if the configuration is valid and terminal agents are installed and accessible to SpecStory | specstory check |
help | Show help information | specstory helpspecstory help syncspecstory help runspecstory help watch |
list | List terminal agent sessions for the current project directory | specstory listspecstory list claudespecstory list cursorspecstory list codexspecstory list droidspecstory list gemini |
login | Authenticate with SpecStory Cloud | specstory login |
logout | Sign out of SpecStory Cloud | specstory logout |
run | Launch an agent and auto-save sessions to Markdown (and Cloud if logged in) | specstory run claudespecstory run cursorspecstory run codexspecstory run droidspecstory run gemini |
sync | Convert past sessions to Markdown and optionally sync them to SpecStory Cloud | specstory syncspecstory sync -s <sessionId> |
version | Display the current SpecStory version | specstory version |
watch | Watch for new agent activity and auto-save to markdown | specstory watchspecstory watch claudespecstory watch cursorspecstory watch codexspecstory watch droidspecstory watch gemini |
Info
specstory sync generates markdown for all project sessions by default. To sync specific sessions, pass one or more session IDs with the -s flag: specstory sync -s <id1> -s <id2>.
Flags
| Flag | Description | Usage |
|---|---|---|
-c, --command | Use a custom terminal-agent command or args | specstory run claude -c "claude --dangerously-skip-permissions" |
--console | Stream log output to stdout | specstory sync --console |
--debug | Include debug-level output (requires --console or --log) | specstory sync --log --debug |
--debug-dir | Write debug output to a custom directory | specstory watch --log --debug --debug-dir ~/debug |
-h, --help | Show help information for a command | specstory -h |
--json | Output as JSON | specstory list --json, specstory watch --json |
--local-time-zone | Use local timezone for file name and content timestamps | specstory sync --local-time-zone |
--log | Write logs to ./specstory/debug/debug.log | specstory sync --log |
--no-cloud-sync | Disable cloud sync even when authenticated | specstory run --no-cloud-sync |
--no-telemetry-prompts | Exclude prompt text from telemetry spans | specstory run --no-telemetry-prompts |
--no-usage-analytics | Opt out of usage analytics | specstory sync --no-usage-analytics |
--no-version-check | Skip the version check | specstory run codex --no-version-check |
--only-cloud-sync | Disable local markdown writing and only sync to cloud | specstory watch --only-cloud-sync |
--output-dir | Write markdown exports to a custom directory | specstory watch --output-dir ~/my-agent-sessions |
--print | Output markdown to stdout rather than a file with sync -s <id> | specstory sync -s <id1> -s <id2> --print |
-s, --session | Convert a specific session to Markdown | specstory sync claude -s <sessionId> |
--silent | Suppress non-error output | specstory sync --silent |
--telemetry-endpoint | OpenTelemetry Protocol (OTLP) gRPC collector endpoint | specstory watch --telemetry-endpoint http://localhost:4317 |
--telemetry-service-name | Override the default service name for telemetry | specstory sync --telemetry-service-name my-agents |
-v, --version | Show the current SpecStory version | specstory -v |
Default behavior
Note
The CLI wrapper favors convention over configuration. Most projects will never need to use any flags.
- Session storage:
.specstory/history/in the working directory. - Cloud sync: Enabled when logged in with
specstory loginunless--no-cloud-syncis provided. - Session sources: Reads from
~/.claude/projects/,~/.cursor/chats/,~/.factory/,~/.codex/history, and~/.gemini/tmp/<project_hash>/chats. - Time zone: Defaults to UTC. Use
--local-time-zoneto stamp file names and content in local time.
Project scaffolding
The first run inside a project creates:
~/.specstory/cli/config.tomluser level configuration../.specstory/directory for state and configuration../.specstory/history/for exported markdown../.specstory/.project.jsonfor project bookkeeping../.specstory/cli/config.tomlproject specific configuration.
~/
└── .specstory/
└── cli/
├── config.toml # User level configuration
└── auth.json # SpecStory Cloud login state
<project>/
└── .specstory/
├── cli/
│ └── config.toml # Project level configuration
├── history/ # Markdown session transcripts
├── debug/ # Debug logs (if `log` enabled)
│ └── debug.log
└── .project.json # Project stateInfo
History files are written to ./.specstory/history/ in the project you run from.
Configuration
Note
The CLI wrapper favors convention over configuration. Most projects will never need to use any configuration settings.
The SpecStory CLI uses two configuration files:
- User-level (
~/.specstory/cli/config.toml) — global settings that apply across all projects. - Project-level (./.specstory/cli/config.toml`) — settings specific to a single project.
Both are created automatically the first time you run run, sync, or watch in a project. By default the configuration is commented out and inert like the example shown below.
To customize a setting, uncomment the line by removing the # and edit the value.
These settings mirror the flag options available on the CLI. If you find yourself passing the same flags repeatedly, setting them in a user or project config is more convenient.
Configuration is resolved in the following order, from highest to lowest priority:
- CLI flags — always win
- Project-level config (
./.specstory/cli/config.toml) - User-level config (
~/.specstory/cli/config.toml)
This means a CLI flag will override a project setting, and a project setting will override a user setting.
# SpecStory CLI Configuration
#
# Uncomment (remove the #) the line and edit any setting below to change the default behavior.
# For more information, see: https://docs.specstory.com/integrations/terminal-coding-agents/usage
[local_sync]
# Write markdown files locally. (default: true)
# enabled = false # equivalent to --only-cloud-sync
# Custom output directory for markdown files.
# Default: ./.specstory/history (relative to the project directory)
# output_dir = "~/.specstory/history" # equivalent to --output-dir "~/.specstory/history"
# Use local timezone for file name and content timestamps (default: false, UTC)
# local_time_zone = true # equivalent to --local-time-zone
[cloud_sync]
# Sync session data to SpecStory Cloud. (default: true, when logged in to SpecStory Cloud)
# enabled = false # equivalent to --no-cloud-sync
[logging]
# Write logs to .specstory/debug/debug.log (default: false)
# log = true # equivalent to --log
# Debug-level output, requires console or log (default: false)
# debug = true # equivalent to --debug
# Custom output directory for debug data.
# Default: ./.specstory/debug (relative to the project directory)
# debug_dir = "~/.specstory/debug" # equivalent to --debug-dir "~/.specstory/debug"
# Error/warn/info output to stdout (default: false)
# console = true # equivalent to --console
# Suppress all non-error output (default: false)
# silent = true # equivalent to --silent
[version_check]
# Check for new versions of the CLI on startup.
# Default: true
# enabled = false # equivalent to --no-version-check
[analytics]
# Send anonymous product usage analytics to help improve SpecStory.
# Default: true
# enabled = false # equivalent to --no-usage-analytics
[telemetry]
# OTLP gRPC collector endpoint (e.g., "localhost:4317" or "http://localhost:4317")
# endpoint = "localhost:4317"
# Override the default service name (default: "specstory-cli")
# service_name = "my-service-name"
# Include user prompt text in telemetry spans (default: true)
# prompts = false
[providers]
# Agent execution commands by provider (used by specstory run)
# Pass custom flags (e.g. claude_cmd = "claude --allow-dangerously-skip-permissions")
# Use of these is equivalent to -c "custom command"
# Claude Code command
# claude_cmd = "claude"
# Codex CLI command
# codex_cmd = "codex"
# Cursor CLI command
# cursor_cmd = "cursor-agent"
# Droid CLI command
# droid_cmd = "droid"
# Gemini CLI command
# gemini_cmd = "gemini"| Section | Option | Default | Description |
|---|---|---|---|
[local_sync] | enabled | true | Write local markdown files |
[local_sync] | output_dir | .specstory/history | Custom output directory for markdown files |
[local_sync] | local_time_zone | false | Use local timezone for timestamps |
[cloud_sync] | enabled | true | Sync sessions to SpecStory Cloud |
[logging] | debug_dir | .specstory/debug | Custom output directory for debug data |
[logging] | console | false | Output logs to stdout |
[logging] | log | false | Write logs to debug file |
[logging] | debug | false | Enable debug-level output |
[logging] | silent | false | Suppress non-error output |
[version_check] | enabled | true | Check for newer CLI versions on start up |
[analytics] | enabled | true | Send anonymous usage analytics |
[telemetry] | endpoint | disabled | OTLP gRPC collector endpoint |
[telemetry] | service_name | "specstory-cli" | Service name for telemetry |
[telemetry] | prompts | true | Include prompt text in telemetry spans |
[providers] | claude_cmd | "claude" | Claude Code command |
[providers] | codex_cmd | "codex" | Codex CLI command |
[providers] | cursor_cmd | "cursor-agent" | Cursor CLI command |
[providers] | droid_cmd | "droid" | Droid CLI command |
[providers] | gemini_cmd | "gemini" | Gemini CLI command |
Info
Telemetry is enabled when an endpoint is configured unless the standard OTEL_SDK_DISABLED ENV var is set to true or 1. See the OpenTelemetry section of the README for more information.
Debugging
Use console streaming (--console) or log files (--log) to inspect details (--debug) on processing.
# Run interactively with verbose output
specstory run claude --console --debug
# Capture logs without console noise
specstory sync cursor --log
# Capture detailed logs
specstory watch --log --debugLog output highlights:
--logoutput written to./.specstory/debug/debug.log- Which session files are being parsed.
- Where Markdown exports are written.
- Errors encountered during capture or sync.