From f490ce781f5e2b3daeaf854854efb4bbc9324438 Mon Sep 17 00:00:00 2001 From: "Chris Van Pelt (CVP)" Date: Sun, 9 Nov 2025 03:10:31 +0000 Subject: [PATCH 1/3] Disable Checkpoint Manager checkpoint: 1 --- container/internal/git/checkpoint_manager.go | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/container/internal/git/checkpoint_manager.go b/container/internal/git/checkpoint_manager.go index 035e599b..8f59e58d 100644 --- a/container/internal/git/checkpoint_manager.go +++ b/container/internal/git/checkpoint_manager.go @@ -23,6 +23,13 @@ func GetCheckpointTimeout() time.Duration { return DefaultCheckpointTimeoutSeconds * time.Second } +// IsCheckpointEnabled returns whether automatic checkpoint creation is enabled +// Disabled by default, can be enabled by setting CATNIP_ENABLE_CHECKPOINTS=true +func IsCheckpointEnabled() bool { + value := os.Getenv("CATNIP_ENABLE_CHECKPOINTS") + return value == "true" || value == "1" +} + // CheckpointManager handles checkpoint functionality for sessions type CheckpointManager interface { ShouldCreateCheckpoint() bool From 43994a1055d60a2768fe76fe0fe4c93f2cc23cba Mon Sep 17 00:00:00 2001 From: "Chris Van Pelt (CVP)" Date: Sun, 9 Nov 2025 03:11:02 +0000 Subject: [PATCH 2/3] Disable Checkpoint Manager checkpoint: 2 --- container/internal/services/claude_monitor.go | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/container/internal/services/claude_monitor.go b/container/internal/services/claude_monitor.go index c198ac45..b7641900 100644 --- a/container/internal/services/claude_monitor.go +++ b/container/internal/services/claude_monitor.go @@ -716,6 +716,11 @@ func (m *WorktreeCheckpointManager) HandleTitleChange(newTitle string) { // startCheckpointTimer starts or restarts the checkpoint timer func (m *WorktreeCheckpointManager) startCheckpointTimer() { + // Check if checkpoints are enabled via environment variable + if !git.IsCheckpointEnabled() { + return + } + timeout := git.GetCheckpointTimeout() // Start timer silently m.checkpointTimer = time.AfterFunc(timeout, func() { From 8b30fb80cdda4d18255e74a997071fa09e26dd34 Mon Sep 17 00:00:00 2001 From: "Chris Van Pelt (CVP)" Date: Sun, 9 Nov 2025 03:12:02 +0000 Subject: [PATCH 3/3] Disable Checkpoint Manager checkpoint: 3 --- .../internal/git/checkpoint_manager_test.go | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/container/internal/git/checkpoint_manager_test.go b/container/internal/git/checkpoint_manager_test.go index a3ffb7c6..befd6fb3 100644 --- a/container/internal/git/checkpoint_manager_test.go +++ b/container/internal/git/checkpoint_manager_test.go @@ -97,6 +97,37 @@ func TestGetCheckpointTimeout(t *testing.T) { assert.Equal(t, DefaultCheckpointTimeoutSeconds*time.Second, timeout) } +func TestIsCheckpointEnabled(t *testing.T) { + // Test disabled by default + _ = os.Unsetenv("CATNIP_ENABLE_CHECKPOINTS") + enabled := IsCheckpointEnabled() + assert.False(t, enabled) + + // Test enabled with "true" + _ = os.Setenv("CATNIP_ENABLE_CHECKPOINTS", "true") + defer func() { _ = os.Unsetenv("CATNIP_ENABLE_CHECKPOINTS") }() + enabled = IsCheckpointEnabled() + assert.True(t, enabled) + + // Test enabled with "1" + _ = os.Setenv("CATNIP_ENABLE_CHECKPOINTS", "1") + enabled = IsCheckpointEnabled() + assert.True(t, enabled) + + // Test disabled with other values + _ = os.Setenv("CATNIP_ENABLE_CHECKPOINTS", "false") + enabled = IsCheckpointEnabled() + assert.False(t, enabled) + + _ = os.Setenv("CATNIP_ENABLE_CHECKPOINTS", "0") + enabled = IsCheckpointEnabled() + assert.False(t, enabled) + + _ = os.Setenv("CATNIP_ENABLE_CHECKPOINTS", "yes") + enabled = IsCheckpointEnabled() + assert.False(t, enabled) +} + func TestShouldCreateCheckpoint(t *testing.T) { cm := &SessionCheckpointManager{ lastCommitTime: time.Now(),