fix: detect race condition when file is modified during user confirma…#37
Open
vyagh wants to merge 1 commit intoblackboxaicode:mainfrom
Open
fix: detect race condition when file is modified during user confirma…#37vyagh wants to merge 1 commit intoblackboxaicode:mainfrom
vyagh wants to merge 1 commit intoblackboxaicode:mainfrom
Conversation
There was a problem hiding this comment.
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_WAITerror 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
cf3cc6c to
b0a45d3
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
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
EDIT_FILE_MODIFIED_DURING_WAITerror typemtimewhen read during shouldConfirmExecute()mtimebefore write in execute() - abort with actionable error if changedHow it works