Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Telemetry & Bug Reports

mantis ships two local-only diagnostic features: an opt-in usage telemetry log and an on-demand bug report command. Neither sends anything anywhere — both write files to your machine that you can inspect, delete, or choose to share when filing an issue.

Bug reports

Open the command palette (Ctrl+P) and run “Report a bug (save diagnostics locally)”. This opens a modal dialog where you can write a description of the bug and preview the diagnostic report below it.

When you submit the report (via Ctrl+S or Ctrl+Enter), mantis:

  1. Saves the report as markdown under the state directory (~/.local/state/mantis/bug-reports/ on Linux/macOS, %APPDATA%\mantis\bug-reports\ on Windows).
  2. Attempts to open your default browser to create a new GitHub issue pre-filled with your description and the diagnostic report.
  3. If the report exceeds the URL length limit (~6KB) or if the browser fails to open, it copies the full report to your clipboard so you can paste it manually, updating the status bar with instructions.

The report contains, in full:

  • app version and release date
  • OS, architecture, OS version, and whether the session runs under WSL
  • terminal identity: the TERM, TERM_PROGRAM, TERM_PROGRAM_VERSION, and COLORTERM environment variables, terminal size, and booleans for Windows Terminal / SSH sessions
  • workspace shape: visible node/file/directory counts, tree depth, number of expanded directories, walk-error count, and whether it is a git repo
  • open-file facts: extension, size, line count, encoding, line endings, detected syntax name, and JSON/diff/memory-mapped flags — never the name
  • which config keys differ from defaults (key paths only, never values), the theme name, and the plugin count
  • whether telemetry is enabled

It deliberately contains no personal data: no absolute paths, no file or directory names, no file content, no config values, no plugin names, and no environment variables beyond the terminal whitelist above.

Telemetry

Telemetry is disabled by default. Toggle it from the command palette (Ctrl+P“Toggle telemetry”) — the status bar confirms the new state and the setting persists to mantis.toml:

[telemetry]
enabled = true

You can also set this key by hand instead of using the palette.

When enabled, whitelisted events are appended to a local JSONL log under <state dir>/telemetry/. Each session writes to a fresh, timestamped file events-<epoch>.jsonl (one file per session), rotated at 1 MiB within a session; at most five files (one active plus four rotated) are kept across sessions. When disabled — the default — no events are recorded and no files or threads are created. Data never leaves your machine; there is no upload endpoint.

Complete event schema

Events are a closed set; each line also carries ts_ms, milliseconds since the session started (no wall-clock timestamps).

EventFieldsRecorded when
session_startapp_version, os, arch, terminal, os_version, wsl, term_program, term_program_version, colorterm, windows_terminal, ssh_session, terminal_size, tree_nodes, tree_files, tree_dirs, tree_max_depth, expanded_dirs, tree_filter_active, walk_errors, git_repo, git_mode, file_open, file_extension, file_size_bytes, file_line_count, file_encoding, file_line_ending, file_syntax, file_is_json, file_is_diff, file_uses_mmap, theme, plugin_count, telemetry_enabledmantis starts — same privacy rules as bug-report snapshot: counts and whitelisted env vars only, never paths or names
session_endduration_s, events_droppedmantis exits
action_invokedaction (canonical action id), source (palette, key, mouse)a command palette, key binding, or mouse action runs
overlay_openedkind (help, about, theme_picker, command_palette, etc.)an overlay popup is opened
feature_usedfeature (fold, diff_nav, git_history, visual_mode, git_blame)a core feature is used
plugin_toggledkind (linter, formatter, etc.), enabled (bool)a plugin is enabled/disabled
file_openedsize_bucket (under_1kb, from_1kb_to_1mb, etc.), source_kind (tree, search, history, etc.), encoding, is_binarya file is opened in the content pane
perf_spanspan (open_file, build_visible, highlight, etc.), duration_bucket (<1ms, 1-16ms, 16-100ms, >100ms)an instrumented hot-path span finishes
error_occurredmodule, kind (error classification/variant name)an error event is intercepted

Raw keystrokes, search queries, palette query text, file names, and paths are never recorded — the event types above cannot carry them. To stop collecting, set enabled = false (or remove the key); to erase history, delete the telemetry/ directory from the state dir.