Which fff frontend(s)?
MCP server (fff-mcp)
What problem are you trying to solve?
Summary
fff-mcp currently appends git:clean to clean files returned by find_files, for example:
src/a.ts git:clean
src/b.ts git:clean
src/c.ts git:modified
I think clean files should have no Git annotation, while dirty states such as modified, untracked, deleted, and staged states should continue to be shown.
Why this matters
clean is the overwhelmingly common/default state in a repository. Repeating it for nearly every result adds visual noise and consumes unnecessary LLM context without adding much information.
The absence of a Git annotation can already imply the default state, similar to how git status --short only surfaces files that differ from the default state.
For an MCP tool used by coding agents, the higher-value information is the exceptional/actionable state:
src/a.ts
src/b.ts
src/c.ts git:modified
src/new.ts git:untracked
This preserves the useful Git signal while making the output more compact and easier for models to scan.
Existing inconsistency in this repository
pi-fff already follows this behavior in fffFileAnnotation(): it explicitly suppresses clean, unknown, and empty Git states, and only surfaces actionable Git state.
By contrast, fff-mcp uses format_git_status_opt() inside file_suffix(). Since format_git_status_opt(None) returns Some("clean"), file_suffix() ends up materializing the default state as git:clean for every clean file.
There is also already a useful separation in the core implementation: during the initial scan, git_status: None effectively means clean, so clean is represented internally as the absence of an exceptional state. The MCP presentation layer could preserve that idea instead of turning it back into a visible annotation.
Expected behavior
Keep full Git status information in the core/query layer so constraints such as git:modified continue to work, but suppress clean in the MCP presentation layer.
Conceptually, fff-mcp could treat the formatted Git status as absent when it is clean:
let git_status = format_git_status_opt(git_status)
.filter(|status| *status != "clean");
Then only non-default Git states would be appended to file results.
I think this would be better as the default MCP behavior rather than a new configuration option, because clean is the default state and hiding it loses no actionable information. A verbose/debug mode could still expose the complete status if needed.
Proposed solution
No response
Which fff frontend(s)?
MCP server (fff-mcp)
What problem are you trying to solve?
Summary
fff-mcpcurrently appendsgit:cleanto clean files returned byfind_files, for example:I think clean files should have no Git annotation, while dirty states such as
modified,untracked,deleted, and staged states should continue to be shown.Why this matters
cleanis the overwhelmingly common/default state in a repository. Repeating it for nearly every result adds visual noise and consumes unnecessary LLM context without adding much information.The absence of a Git annotation can already imply the default state, similar to how
git status --shortonly surfaces files that differ from the default state.For an MCP tool used by coding agents, the higher-value information is the exceptional/actionable state:
This preserves the useful Git signal while making the output more compact and easier for models to scan.
Existing inconsistency in this repository
pi-fffalready follows this behavior infffFileAnnotation(): it explicitly suppressesclean,unknown, and empty Git states, and only surfaces actionable Git state.By contrast,
fff-mcpusesformat_git_status_opt()insidefile_suffix(). Sinceformat_git_status_opt(None)returnsSome("clean"),file_suffix()ends up materializing the default state asgit:cleanfor every clean file.There is also already a useful separation in the core implementation: during the initial scan,
git_status: Noneeffectively means clean, so clean is represented internally as the absence of an exceptional state. The MCP presentation layer could preserve that idea instead of turning it back into a visible annotation.Expected behavior
Keep full Git status information in the core/query layer so constraints such as
git:modifiedcontinue to work, but suppresscleanin the MCP presentation layer.Conceptually,
fff-mcpcould treat the formatted Git status as absent when it isclean:Then only non-default Git states would be appended to file results.
I think this would be better as the default MCP behavior rather than a new configuration option, because
cleanis the default state and hiding it loses no actionable information. A verbose/debug mode could still expose the complete status if needed.Proposed solution
No response