Overview
The OpenSRE interactive shell persists every line you type to a history file so up-arrow recall and/history work across sessions, and separately records each LLM prompt/response turn for local debugging and /resume. Incident prompts can include sensitive identifiers and tokens, so the shell:
- redacts known token shapes before each entry is written to disk
- supports disabling persistence entirely (memory-only mode)
- caps how many entries are kept (oldest pruned)
- offers a one-shot
/history clearto wipe the file on demand
~/.opensre/interactive_history. See Prompt and response logging below for the separate LLM turn log and its PostHog forwarding behavior.
Defaults
Redaction patterns
The built-in pattern set targets token shapes that are unique enough to keep false positives on natural-language incident text very low. Each match is replaced with a labeled placeholder.
Redaction applies only to persistent history. The line you typed is still passed to OpenSRE’s normal pipeline as you typed it.
Slash commands
Configuration
Settings resolve from (highest wins):- Environment variables
- The
interactive.historyblock in~/.opensre/config.yml - Built-in defaults
Environment variables
Config file
Prompt and response logging
Separately from typed-command history, the interactive shell records each LLM turn — the full prompt sent and the full response received — for chat and follow-up routes. This log is richer than command history (it includes model output, not just what you typed) and is used for two purposes:- Local debugging /
/resume: appended as JSON Lines to~/.opensre/prompt_log.jsonl, and folded into the session file so/resumecan restore conversation context. - Product analytics: forwarded to PostHog as an
$ai_generationevent (model, provider, latency, token counts, and the prompt/response text) so we can track usage and quality of the AI features. Investigation turns additionally include the model/provider/token usage of the investigation run and aninvestigation_idjoin key; failed turns carry structured error properties ($ai_is_error,$ai_error,error_kind). Turns handled entirely by terminal tools or slash commands report$ai_model/$ai_providerasno_conversational_agent; when a conversational reply was intended but the LLM provider failed (missing API key, model access, quota, auth), the event instead reports the attempted model (orunknown) plus anai_error_kindbucket (not_configured,quota,auth, orprovider_error).
Defaults
Environment variables
PostHog forwarding for this event additionally honors the global telemetry opt-outs: set
OPENSRE_NO_TELEMETRY=1, OPENSRE_ANALYTICS_DISABLED=1, or DO_NOT_TRACK=1 to stop all PostHog traffic (including $ai_generation) without touching the local JSONL file. See Environment Variables.
Config file
Threat model
The history file is plain text on local disk at~/.opensre/interactive_history, with the user’s default file permissions. Built-in redaction targets common token shapes only — it is not a substitute for proper secret handling. Treat the file as confidential and be aware:
- A determined attacker with read access to your home directory can still read pre-existing entries written before redaction was enabled.
- Redaction cannot detect tokens that look like normal text (for example a natural-language password). Don’t paste secrets you wouldn’t be comfortable seeing in a system log.
- Custom redaction patterns are not yet supported in v1. If you need to redact internal token shapes, use
/history offfor that session and run/history clearafterwards.
OPENSRE_NO_TELEMETRY=1 (or OPENSRE_PROMPT_LOG_DISABLED=1 to also stop the local file) rather than relying on redaction alone.
For the strongest posture: set OPENSRE_HISTORY_ENABLED=0 and OPENSRE_NO_TELEMETRY=1, accept the loss of cross-session up-arrow recall and /resume context, and rely on the in-memory ring instead.