Skip to content

File Tools Telemetry

The file tools (view, edit, write, multiedit) are how the agent reads and changes your workspace. This page is how you see what it actually did: every invocation is recorded so you can confirm an edit applied, spot a path that was rejected for being out of scope, or catch a sensitive file that was redacted instead of read.

Reach for it when a file change didn’t land the way you expected — an edit silently failed, a backup didn’t take, or a stale-file conflict was auto-merged — and you want the per-edit outcome rather than guessing from the diff.

BMO’s core file primitives (view, edit, write, multiedit) emit paired structured events on every invocation:

  • file_tool.fired at entry
  • file_tool.action for each terminal or per-edit outcome

Events are written to slog and a process-scoped ring buffer (capacity 16) so operators and agents can inspect recent activity without scraping logs.

ActionSeverityMeaning
appliedinfoSuccessful mutation or read completion
resolver_invokedinfoModel-assisted edit resolver started
resolver_failedwarnResolver could not produce content
backup_failedwarnPre-write backup failed; write proceeded (best-effort contract)
history_failedwarnFile-history persistence failed
redactedinfoSensitive path; content not exposed
truncatedinfoRead output truncated (view)
path_rejectedwarnPath outside configured scope
stale_smart_apply_failedwarnSmart-apply repair failed
stale_clean_mergeinfoSmart-apply merged stale base
phase_errorwarnNon-fatal phase failure
cancelledinfoExpected cancellation

Aliases: /files-status, /ft. Read-only. Shows ring capacity, action histogram, and the last 10 events.

Same snapshot as /files for the current process (CLI and TUI share the ring only when run in the same process).

The TUI sidebar shows Files: with idle, last: <action>, or warn: <action> derived from the ring.

list_recent_file_tool_events returns JSON { "ring_capacity", "returned", "events" } with snake_case event fields. Optional session_id filter and limit (default: full ring; capped at ring capacity, currently 16).

Paths matching sensitive patterns (for example .env, credentials*, id_rsa) are labeled <redacted> in telemetry and emit a redacted action on view.