diff --git a/CHANGELOG.md b/CHANGELOG.md
index a8d75a29..1bd2243d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,5 @@
+- Fixed Bypass Permissions edit mode not suppressing the file diff dialog: the edit mode was lost from the registry because it was set before the working directory was assigned at session start
+
# 0.22.35 (2026-05-07)
- Fixed markdown preview not rendering nested list structure (multi-level indented lists now display with proper nesting)
diff --git a/pom.xml b/pom.xml
index 3bec908f..f3cf82b3 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
io.github.nbclaudecodegui
netbeans-claude-code-gui
- 0.22.49-SNAPSHOT
+ 0.22.50-SNAPSHOT
nbm
Netbeans Plugin Claude Code GUI
NetBeans plugin that provides a GUI for Claude Code CLI — run claude code sessions directly inside the IDE.
diff --git a/src/main/java/io/github/nbclaudecodegui/model/ClaudeSessionModel.java b/src/main/java/io/github/nbclaudecodegui/model/ClaudeSessionModel.java
index 74286598..c6cef53a 100644
--- a/src/main/java/io/github/nbclaudecodegui/model/ClaudeSessionModel.java
+++ b/src/main/java/io/github/nbclaudecodegui/model/ClaudeSessionModel.java
@@ -283,6 +283,9 @@ public void setEditMode(EditMode mode) {
*/
public void setWorkingDirectory(File dir) {
workingDirectory = dir;
+ if (dir != null && editMode != null) {
+ EDIT_MODE_REGISTRY.put(dir.getAbsolutePath(), editMode);
+ }
fireOnEdt(() -> listeners.forEach(l -> l.onWorkingDirectoryChanged(dir)));
}
diff --git a/src/test/java/io/github/nbclaudecodegui/model/ClaudeSessionModelTest.java b/src/test/java/io/github/nbclaudecodegui/model/ClaudeSessionModelTest.java
index b6e3ed48..a7418083 100644
--- a/src/test/java/io/github/nbclaudecodegui/model/ClaudeSessionModelTest.java
+++ b/src/test/java/io/github/nbclaudecodegui/model/ClaudeSessionModelTest.java
@@ -119,6 +119,23 @@ void setEditModeNullRemovesRegistryEntry() {
// setWorkingDirectory
// -------------------------------------------------------------------------
+ @Test
+ void setWorkingDirectoryAfterEditModeSyncsRegistry() {
+ // Reproduces the bug: editMode set before workingDirectory (as in startProcess)
+ // → registry must still be populated once workingDirectory is set
+ model.setEditMode(EditMode.BYPASS_PERMISSIONS);
+ assertNull(model.getWorkingDirectory());
+ assertTrue(ClaudeSessionModel.EDIT_MODE_REGISTRY.isEmpty(),
+ "Registry must be empty while workingDirectory is null");
+
+ File dir = new File("/tmp/bypass-test");
+ model.setWorkingDirectory(dir);
+
+ assertEquals(EditMode.BYPASS_PERMISSIONS,
+ ClaudeSessionModel.EDIT_MODE_REGISTRY.get(dir.getAbsolutePath()),
+ "Registry must reflect editMode set before workingDirectory was assigned");
+ }
+
@Test
void setWorkingDirectoryFiresListener() {
AtomicReference captured = new AtomicReference<>();