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
| Setting | Default | Effect |
|---|---|---|
| Persistence | on | Lines you type are appended to the history file. |
| Redaction | on | Known token shapes are replaced with [REDACTED:<kind>] before writing. |
| Retention cap | 5000 entries | Older entries are pruned when the cap is exceeded. |
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.| Kind | Examples |
|---|---|
aws_key | AKIA…, ASIA… |
aws_secret | aws_secret_access_key=… |
github_pat | ghp_…, github_pat_… |
anthropic_key | sk-ant-… |
openai_key | sk-… |
slack_token | xoxb-…, xoxp-…, xoxa-… |
stripe_key | sk_live_…, sk_test_… |
bearer | Bearer <opaque> headers |
jwt | eyJ… three-segment tokens |
password | --password=…, password=… |
private_key | PEM-encoded private keys |
Slash commands
| Command | Effect |
|---|---|
/history | Show all persisted entries. |
/history clear | Wipe the history file. Up-arrow recall resets on next launch. |
/history off | Pause persistence for this session. New entries are not written. |
/history on | Resume persistence for this session. |
/history retention <N> | Keep at most N entries on disk. Prunes immediately. |
/privacy | Show current persistence + redaction state, retention cap, and threat model. |
Configuration
Settings resolve from (highest wins):- Environment variables
- The
interactive.historyblock in~/.opensre/config.yml - Built-in defaults
Environment variables
| Variable | Default | Effect |
|---|---|---|
OPENSRE_HISTORY_ENABLED | 1 | Set to 0/false/off to skip persistence entirely (in-memory only). |
OPENSRE_HISTORY_REDACT | 1 | Set to 0/false/off to disable redaction (raw FileHistory). |
OPENSRE_HISTORY_MAX_ENTRIES | 5000 | Non-negative integer. 0 disables the cap (unlimited). |
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.
Defaults
| Setting | Default | Effect |
|---|---|---|
| Logging | on | Each LLM turn is recorded. |
| Local JSONL file | on | Turns are appended to ~/.opensre/prompt_log.jsonl. |
| PostHog forwarding | on | Turns are also sent as a PostHog $ai_generation event. |
| Redaction | on | Known token shapes (same patterns as command history) are stripped from the prompt and response before either sink. |
Environment variables
| Variable | Default | Effect |
|---|---|---|
OPENSRE_PROMPT_LOG_DISABLED | 0 | Set to 1 to disable prompt/response logging entirely (both local file and PostHog). |
OPENSRE_PROMPT_LOG_LOCAL_DISABLED | 0 | Set to 1 to skip the local JSONL file while leaving PostHog forwarding (if enabled) unaffected. |
OPENSRE_PROMPT_LOG_REDACT | 1 | Set to 0 to log/send raw, unredacted prompt and response text. |
OPENSRE_PROMPT_LOG_PATH | ~/.opensre/prompt_log.jsonl | Override the local JSONL file path. |
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.
Tracer