Skip to content

Conversation

@vyagh
Copy link

@vyagh vyagh commented Dec 26, 2025

Summary

Fixes #24

The EditTool reads a file during user confirmation but doesn't detect if the file is modified externally before writing. This causes silent data loss when users edit the same file while the agent waits for approval.

Changes

  • Add EDIT_FILE_MODIFIED_DURING_WAIT error type
  • Capture file mtime when read during shouldConfirmExecute()
  • Validate mtime before write in execute() - abort with actionable error if changed
  • Add unit test for race condition detection

How it works

  1. When shouldConfirmExecute() reads the file, we store its modification time
  2. At the start of execute(), before any operations, we check if the file's current mtime differs
  3. If changed, return an error instructing the agent to re-read the file

Copilot AI review requested due to automatic review settings December 26, 2025 05:23
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR addresses issue #24 by adding race condition detection to the EditTool. It prevents silent data loss when a file is modified externally during the user confirmation period.

Key Changes:

  • Added EDIT_FILE_MODIFIED_DURING_WAIT error type for race condition detection
  • Implemented mtime-based validation by capturing file modification time during confirmation and checking it before write
  • Added test coverage for the race condition scenario

Reviewed changes

Copilot reviewed 3 out of 3 changed files in this pull request and generated 5 comments.

File Description
packages/core/src/tools/tool-error.ts Added new error type EDIT_FILE_MODIFIED_DURING_WAIT for file modification detection
packages/core/src/tools/edit.ts Added readMtimeMs field to track file modification time, implemented mtime capture in shouldConfirmExecute() and validation in execute(), plus minor formatting changes
packages/core/src/tools/edit.test.ts Added test case to verify race condition detection between confirmation and execution

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

…tion (blackboxaicode#24)

- Add EDIT_FILE_MODIFIED_DURING_WAIT error type
- Capture file mtime when read during shouldConfirmExecute()
- Validate mtime before write in execute()
- Add test case for race condition detection

Closes blackboxaicode#24
@vyagh vyagh force-pushed the fix/issue-24-edit-race-condition branch from cf3cc6c to b0a45d3 Compare December 26, 2025 07:28
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

bug: EditTool Race Condition

1 participant