← Back to News

feature

Oct 21, 2026

Project-scoped file lineage

The Files tab shows one project's recent AI file activity, with line history, session attribution, and a way to clear a sensitive mark for a single session.

Paid and Enterprise accounts can open a file map of what an AI coding session actually touched. Enterprise organizations get it on the Files page. Personal paid accounts get the same map on Stats. The Free plan does not include it.

The map opens on the named project with the most file activity in the last seven days. The window can be switched to the last hour or the last day. Connected is the default: files that never changed in the same session as another file are hidden until you switch to All. Drag a circle to pin it. Click it to open the file.

How to use it

The project menu lists projects that had a name recorded on their sessions in the selected window. Sessions with no project name are left out of that ranking, so they never become the default.

A file stays on the map when its path belongs to the selected project. If the path names a different project that was also active in the window, it is left off. A session labeled CVFormatter can still read files in another checkout. Those paths no longer appear on the CVFormatter map when that other project is known. Relative paths, and folder names that are not a known project, still stay.

Circle color is the kind of access in the window. Green is a create. Amber is an edit of an existing file. Blue is a read. Indigo is a file that was both read and changed. Rose overrides those when the filename matches a sensitive pattern, such as an environment file, a private key, or a name that looks like an API key. A line between two circles means those files were touched in the same session. The graph draws the strongest of those links and stops once a file already has three.

The counts above the map are reads, and writes plus edits. When the window only has recorded file changes and no access events, reads show as zero. That is what the last day of CVFormatter looks like: eleven edits and writes, and no read events in that window. The seven-day view, which has access events, includes reads.

Streams has three modes. Full and Quiet draw particles along each link. Lines draws the stroke and no particles. Particle speed is the PARTICLE_SPEED constant in the map component.

Opening a file

The drawer has two tabs.

AI Blame & Integrity lists line ranges and the session that last wrote them. A session id opens that session. The chain status is intact only when each edit's before-hash matches the previous edit's after-hash. Older stored edits have no content hashes, so those files stay unreplayable and the tab says so. Line ranges still appear when the edit recorded a start line. Edits stored without a line range show the banner and no line list.

Attribution & Provenance lists each recorded access: read, write, edit, or blocked, with the client, user, device, time, and a link to the session. If the file was marked sensitive, this tab states the filename rule. An organization admin can remove that mark for one session by entering a note. Other sessions that touched the same path stay sensitive, and a later session is still flagged. Restore puts the mark back on that session. The circle stays rose until every sensitive session for that file has been removed.

Clearing a row in Sensitive File Access Reviews records the audit decision. It does not change the circle. The removal on the Attribution tab does.

Enterprise Files also has Sensitive File Access Reviews and a page for extra filename patterns. Personal Stats has the map only.

Why it is scoped to one project

An organization-wide graph of every file touched in seven days is too dense to read, and it mixes checkouts. A session's project name is not enough on its own, because that session can still open files somewhere else. The path check is the second filter.

The sensitive-file rule is a filename match, so it false-positives. 102_org_api_keys_revoked_at.sql is marked sensitive because the name contains api_key. Removing that mark for the whole path would hide a later session that really did open a secret with a similar name. The removal is therefore one session, with a note.

Limits

These are the edges we know about.

  • A day-long window can show writes and zero reads when only file changes were stored for that period.
  • Blame cannot call a historical edit intact or broken. There is no hash chain to check. New sessions can record hashes. The rows already stored cannot.
  • A path that does not name a known project can still appear on the selected project's map.
  • Personal Stats does not include the review queue or custom sensitive patterns.

If a file is on the wrong project, a read count looks wrong, or a sensitive mark should be an allowlist for the filename instead of one session, say so. That last case is the one most likely to need a different rule.