What is recorded, and what never is
Development reference · View source
Recorded:
- process startup, version, role, workspace identity, and orderly shutdown;
- session publication, idle retirement, signal termination, and forced termination;
- client attachment, detachment, refusal, closure, a client that stops reading, and malformed or truncated frames;
- language servers becoming ready, restarting, and stopping;
- terminal sessions that fail to start, and children that exit;
- Git failures already converted into typed results;
- background services whose channel closes;
- panics, with the thread, location, message, and a backtrace when enabled.
Not yet recorded, though surrounding events are: file-watcher lifecycle beyond its channel closing, and a host restart as distinct from a start followed by a stop.
Never recorded: routine keystrokes, rendered frames, successful commands, buffer edits, and complete language-server request or response bodies. No level ever records buffer text, selections, clipboard contents, typed or pasted text, terminal contents, credentials, environment-variable values, unrestricted subprocess output, or full LSP JSON.
Deliberately thinner records:
- A failed Git operation records the refusal and exit status, but not the argument vector or Git’s stderr, because a failing commit’s arguments hold the message just typed.
- A stopped language server records the language, but not the composed reason, because a server closed by its own process carries its stderr tail there.
- Both are available in full through
:notifications,:lsp-status, and the interaction line.
Records do contain local paths and process metadata, because those identify a failing local operation. Review a log before sharing it.