Haim Ari
Haim Ari·

How AI Agents Collaborate on Code Without Conflicts

agent-protocolmulti-agentcollaboration
Share:

The Problem

When multiple AI agents work on the same codebase simultaneously, merge conflicts are inevitable — or are they? Traditional git workflows assume sequential human developers who communicate through PRs. But AI agents operate in parallel, move fast, and don't read Slack.

dkod solves this with the Agent Protocol — a purpose-built protocol for concurrent AI code collaboration with symbol-level conflict detection and real-time cross-agent awareness.

The Demo

We ran 9 end-to-end scenarios testing the full user story: sign-in, repo import, and multi-agent collaboration — through both the dk CLI and dk-mcp (Model Context Protocol) interfaces.

Agents Working in Harmony

Two agents editing the same file in parallel — both through CLI and MCP interfaces — merged their changes without a single conflict. Because they touched different symbols, the platform resolved the merge automatically. No coordination needed.

Catching Collisions

When two agents modified the same function (format_greeting()), the platform caught it. Depending on the nature of the overlap, it either:

  • Auto-rebased — when changes were compatible, the platform automatically rebased the second agent's work on top of the first
  • Flagged a hard conflict — when both agents structurally modified the same symbols, the merge was blocked with a clear conflict report identifying exactly which symbols collided

But What Happens After a Conflict?

The agent doesn't stop. When a merge fails, the platform returns a structured ConflictInfo response — not a vague error, but a precise, symbol-level report the agent can act on:

Merge CONFLICTS detected: file: src/strings.rs symbol: format_greeting type: semantic other_agent: agent-a description: Symbol 'format_greeting' — our change: Modified, their change: Modified

The agent knows exactly what conflicted, which file and symbol, and who made the competing change. This is the protocol's MergeResponse.conflicts[] array — each entry carries a file_path, symbol_name, conflict_type, other_agent_id, and a human-readable description.

From here, the agent enters an autonomous recovery loop:

  1. Read the updated state — call dk search to query the latest version of the conflicting symbol, and dk_file_read to fetch the current base file after the other agent's merge
  2. Reconcile the change — the agent now sees both its own version and the merged version, and can write a resolution that incorporates both
  3. Re-submit — call dk_file_write with the resolved content, then dk commitdk checkdk push

If the merge succeeds, the session clears. If another conflict appears (a third agent merged in between), the cycle repeats. The agent's session overlay persists across retries — no work is lost, no context is dropped.

This is what makes the protocol agent-native: conflicts aren't terminal errors that require human intervention. They're structured feedback that agents can resolve autonomously, in real time.

Real-Time Dependency Awareness

Agent A updated a config constant (DEFAULT_TIMEOUT). Agent B, working in a separate session, read the updated value and adapted its implementation accordingly — all without manual coordination.

Under the Hood

The Agent Protocol

Loading diagram...

Workspace Overlays

Each agent gets an isolated workspace overlay on top of the shared repository. Writes go to the overlay, reads fall through to the base. Agents never see each other's uncommitted changes — isolation without the overhead of full repository clones.

Symbol-Level Conflict Detection

Unlike git's line-level conflict detection, dkod detects conflicts at the symbol level — functions, types, constants. Two agents can modify the same file without conflict, as long as they touch different symbols.

Loading diagram...

Results

ScenarioInterfaceStatusDuration
Single agent CLI flowCLIPASS1.8s
Two agents, same file (no conflict)CLIPASS3.4s
Two agents, same function (conflict)CLIPASS3.2s
Agent dependency chainCLIPASS3.4s
Single agent MCP flowMCPPASS1.3s
Two agents, same file (no conflict)MCPPASS1.2s
Two agents, same function (conflict)MCPPASS1.5s
Agent dependency chainMCPPASS2.1s

All 8 core scenarios passed. Average operation time under 2.5 seconds.

Try It Yourself

Install the dk CLI:

cargo install --git https://github.com/dkod-io/dkod-engine dk-cli

Connect to a repository and start coding:

dk login dk init my-org/my-repo --intent "add new feature" dk cat src/main.rs dk add src/main.rs --content "..." dk commit -m "add feature" dk check dk push -m "ship it"

Or use the MCP bridge with Claude Code — add to your MCP settings and use dk_connect, dk_file_write, dk commit, dk check, dk push.


Built with dkod — the agent-native code platform.

Join the community

Discuss this post, ask questions, and connect with other developers building with AI agents.

Join Discord