Snag help › Snag for the desktop
Observation
Snag can record what is being worked on, so a record exists even on days the timer was forgotten. It is off by default. Each source is switched on separately in the [observe] section of the config file; see Settings.
Everything recorded stays in the local database. Nothing is sent to the server.
In this version observation only records. It does not create time entries, and the commit setting has no effect.
Sources
| Key | Records | Needs |
|---|---|---|
window | the focused window's title and application | Hyprland |
shell | the focused terminal's working directory, and the git repository it is in (branch and commit, read from .git without running git) | Hyprland |
agent | which repository and task a coding agent session is on: times, directory, branch and the session's one-line title. Message contents are never read. | Claude Code session files under ~/.claude/projects/ |
screen | not built; turning it on does nothing, and snag doctor says so | - |
Turn on shell first: it is the source that tells one project from another.
Window titles that are never recorded
title_deny lists title fragments. A window whose title matches is not recorded at all, not even with the title removed. The default list:
title_deny = ["1Password", "Bitwarden", "KeePass", "password", "Private Browsing"]Setting title_deny replaces the default list rather than adding to it.
Seeing and deleting what was recorded
| Command | Does |
|---|---|
snag observed | counts of what has been recorded, in total and in the last day, by source and by repository, and where it is stored |
snag observed --json | the same counts as JSON |
snag forget | deletes every sighting (sightings behind a derived entry are kept) |
snag forget --all | deletes every sighting and anything derived from them |
Both work with the daemon stopped. Time entries already written are not touched by forget.
Sightings that nothing has been derived from are deleted automatically after 14 days.
snag doctor lists each source, whether it is on, and whether this machine can provide it.
Next: Time from git history