Last updated: 2026-07-27
trigger-tree sends no data off your machine. Its local telemetry stays in your project directory, under your control. There are no network calls, external services, analytics vendors, or runtime dependencies.
trigger-tree’s hooks write a local event log to $PROJECT/.trigger-tree/history.jsonl
inside the project you use it in:
rg/grep/find commands, or
consumed by successful Bash cat/head/tail/non-mutating sed/awk calls.
Bash reader arguments are checked after shell variables, substitutions, loops, and
globs resolve; only matching normalized paths are retained, with event metadata.TT_LOG_TOPICS='on', at most eight
case-insensitive whole-word labels selected from the repository’s own router and
directive-manifest vocabulary. No prompt-derived free text is stored, and this works
independently of the prompt mode.TT_EDIT_REGEX, normalized relative to the
project, plus tool name and event metadata. External paths, file content, arguments,
diffs, and patches are not stored.TT_LOG_AGENTS='on' stores the persona name of a
launched subagent (for example backend-engineer). The launch payload also
carries the task prompt and description; trigger-tree never reads either.TT_LOG_COMMANDS='classified' stores only stable IDs of
user-confirmed manifest patterns that matched. full additionally stores a bounded
command line. Command output is never stored. Missing configuration means off.git commit command, used only to order deterministic probes; no test output or commit
message is retained by those events.TT_LOG_PROMPTS in
.trigger-tree/config.sh:
hash (the fallback before setup) — a SHA-1 digest only, no text; a
user-wide ~/.trigger-tree/config.sh can set off as the pre-setup
default for every repository, and the project’s own choice always winstruncate (recommended during setup) — first 200 characters, local and gitignoredoff — a bare marker, nothing else/tt note.The committed .trigger-tree/directives.json is not telemetry. It is
human-readable configuration containing instruction file paths and SHA-256 hashes,
source line references, optional directive text, and user-confirmed deterministic
probes. A model may propose this file only at authoring time; the user confirms it and
measurement thereafter uses no model tokens.
The optional HTML report (/tt insights) is generated locally to
.trigger-tree/report.html. If you choose to publish it as a Claude Artifact, that
is an explicit action you take through Claude Code — the plugin itself never uploads
anything.
full mode stores a bounded command line locally; command output, search output, and
MCP responses are never logged. Runtime wrappers pass stdout, stderr, and exit status
through unchanged.You own the data. Delete .trigger-tree/ in your project at any time to remove all
recorded history. The directory is gitignored by the recommended setup, so it is not
committed or shared through version control.
Changes to this policy are recorded in this file’s git history. Questions: me@heddevanderheide.nl.