# Periodic Save Task - Invisible Mode Setup ## Problem Solved The `periodic_save_check.py` Task Scheduler task was showing a flashing console window every minute. This has been fixed by configuring the task to run completely invisibly. --- ## What Changed ### 1. Updated Setup Script **File:** `D:\ClaudeTools\.claude\hooks\setup_periodic_save.ps1` **Changes:** - Uses `pythonw.exe` instead of `python.exe` (no console window) - Added `-Hidden` flag to task settings - Changed LogonType from `Interactive` to `S4U` (Service-For-User = background) - Added verification instructions in output ### 2. Created Update Script **File:** `D:\ClaudeTools\.claude\hooks\update_to_invisible.ps1` **Purpose:** - Quick one-command update for existing tasks - Preserves existing triggers and settings - Validates pythonw.exe exists - Shows verification output ### 3. Created Documentation **File:** `D:\ClaudeTools\.claude\PERIODIC_SAVE_INVISIBLE_SETUP.md` **Contents:** - Automatic setup instructions - Manual update procedures (PowerShell and GUI) - Verification steps - Troubleshooting guide --- ## How to Fix Your Current Task ### Option 1: Automatic (Recommended) Run the update script: ```powershell # From PowerShell in D:\ClaudeTools .\.claude\hooks\update_to_invisible.ps1 ``` This will: - Find pythonw.exe automatically - Update the task to use pythonw.exe - Set the task to run hidden - Verify all settings are correct ### Option 2: Recreate Task Re-run the setup script (removes old task and creates new one): ```powershell # From PowerShell in D:\ClaudeTools .\.claude\hooks\setup_periodic_save.ps1 ``` ### Option 3: Manual (GUI) 1. Open Task Scheduler (Win + R → `taskschd.msc`) 2. Find "ClaudeTools - Periodic Context Save" 3. Right-click → Properties 4. **Actions tab:** Change `python.exe` to `pythonw.exe` 5. **General tab:** Check "Hidden" checkbox 6. Click OK --- ## Verification After updating, verify the task is configured correctly: ```powershell # Quick verification Get-ScheduledTask -TaskName "ClaudeTools - Periodic Context Save" | Select-Object -ExpandProperty Actions | Select-Object Execute # Should show: ...pythonw.exe (NOT python.exe) # Check hidden setting Get-ScheduledTask -TaskName "ClaudeTools - Periodic Context Save" | Select-Object -ExpandProperty Settings | Select-Object Hidden # Should show: Hidden: True ``` --- ## Technical Details ### pythonw.exe vs python.exe | Executable | Console Window | Use Case | |------------|---------------|----------| | `python.exe` | Shows console | Interactive scripts, debugging | | `pythonw.exe` | No console | Background tasks, GUI apps | ### Task Scheduler Settings | Setting | Old Value | New Value | Purpose | |---------|-----------|-----------|---------| | Executable | python.exe | pythonw.exe | No console window | | Hidden | False | True | Hide from task list | | LogonType | Interactive | S4U | Run in background | ### What is S4U (Service-For-User)? - Runs tasks in background session - No interactive window - Doesn't require user to be logged in - Ideal for background automation --- ## Files Modified/Created ### Modified - `D:\ClaudeTools\.claude\hooks\setup_periodic_save.ps1` - Lines 9-18: Auto-detect pythonw.exe path - Line 29: Use pythonw.exe instead of python.exe - Line 43: Added `-Hidden` flag - Line 46: Changed LogonType to S4U - Lines 59-64: Updated output messages ### Created - `D:\ClaudeTools\.claude\hooks\update_to_invisible.ps1` - Quick update script for existing tasks - `D:\ClaudeTools\.claude\PERIODIC_SAVE_INVISIBLE_SETUP.md` - Complete setup and troubleshooting guide - `D:\ClaudeTools\INVISIBLE_PERIODIC_SAVE_SUMMARY.md` - This file - quick reference summary --- ## Testing After updating, the task will run every minute but you should see: - ✓ No console window flashing - ✓ No visible task execution - ✓ Logs still being written to `D:\ClaudeTools\.claude\periodic-save.log` Check logs to verify it's working: ```powershell Get-Content D:\ClaudeTools\.claude\periodic-save.log -Tail 20 ``` You should see log entries appearing every minute (when Claude is active) without any visible window. --- ## Troubleshooting ### Still seeing console window? **Check executable:** ```powershell Get-ScheduledTask -TaskName "ClaudeTools - Periodic Context Save" | Select-Object -ExpandProperty Actions ``` - If shows `python.exe` - update didn't work, try manual update - If shows `pythonw.exe` - should be invisible (check hidden setting) **Check hidden setting:** ```powershell Get-ScheduledTask -TaskName "ClaudeTools - Periodic Context Save" | Select-Object -ExpandProperty Settings | Select-Object Hidden ``` - Should show `Hidden: True` - If False, run update script again **Check LogonType:** ```powershell Get-ScheduledTask -TaskName "ClaudeTools - Periodic Context Save" | Select-Object -ExpandProperty Principal ``` - Should show `LogonType: S4U` - If Interactive, run update script again ### pythonw.exe not found? ```powershell # Check Python installation Get-Command python | Select-Object -ExpandProperty Source # Check if pythonw.exe exists in same directory $PythonPath = (Get-Command python).Source $PythonDir = Split-Path $PythonPath -Parent Test-Path (Join-Path $PythonDir "pythonw.exe") ``` If False, reinstall Python. pythonw.exe should always come with Python on Windows. --- ## Current Status **Task Name:** ClaudeTools - Periodic Context Save **Frequency:** Every 1 minute **Action:** Check activity, save context every 5 minutes of active work **Visibility:** Hidden (no console window) **Logs:** `D:\ClaudeTools\.claude\periodic-save.log` --- **Last Updated:** 2026-01-17 **Updated Files:** 1 modified, 3 created