How an AI agent encounters and resolves a conflict

The MCP tools, and the scope that bounds them.

Written By Dustin

Last updated About 3 hours ago

An agent working through the MCP server meets conflicts the same way you do — as data — and gets a deliberately narrower set of ways to act on them.

Finding them

The list_conflicts tool takes no arguments and returns the conflicted paths the session can see. The status tool also reports open conflicts as part of its payload.

Both are scope-filtered. A conflict on a path outside the session's capability-token scope is not listed, not summarized, and not hinted at — the agent does not learn it exists.

Resolving one

The resolve_conflict tool takes:

ParameterValue
pathRequired. The conflicted repository-relative path.
strategyRequired. Either ours or theirs — nothing else.
regionOptional, zero-based. Records the choice for one region.

The strategy set is intentionally small. An agent can take a side; it cannot hand-merge, cannot rename, and cannot invoke the model resolver — --ai is not exposed here, because chaining one model's judgement into another's is a decision an owner makes, not one an agent makes for itself.

It stages; it does not commit

A resolution through MCP is staged. It becomes durable on a later commit, which carries the agent's provenance — its token, its task, and the human who authorized it. The resolution is attributable after the fact, which is the point of routing it through a token at all.

The scope gate comes first

Path scope is checked before anything is read, not after. An out-of-scope conflict is never revealed in the process of refusing to resolve it — a refusal that leaked the path would be its own disclosure.

Protected paths

Resolving a conflict on a protected path means decrypting its sides, so it goes through the audited read gate rather than around it. An agent whose token lacks the read permission or the clearance for that path fails closed with TVO-TOKEN-004 and stages nothing at all.

Being able to write a path is not the same as being able to read it, and resolving a conflict requires both. That ordering is what stops "resolve this conflict" from becoming a way to extract a file an agent was never cleared to see.

Reviewing what it did

tovio conflicts
tovio diff
tovio log --entity agent

An agent's resolution is an ordinary resolution: visible in the log with its provenance, and reversible with tovio undo.