[launchd] Sync Claude session state on macOS

Adds a launchd agent that runs the existing claude-save make target
every 30 minutes and at login, so macOS machines commit and push
session state the way the systemd timer does on Linux.

The agent runs through /bin/sh because launchd expands neither ~ nor
$HOME in ProgramArguments, and sets PATH explicitly because agents
inherit no shell environment. The claude target loads it via launchctl
bootstrap on darwin.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-09-17 11:37:30 -04:00
parent 1b0f3ef4a5
commit 8a851413af
2 changed files with 40 additions and 0 deletions

View File

@ -45,6 +45,11 @@ claude:
systemctl --user daemon-reload && \
systemctl --user enable --now claude-save.timer; \
fi
@if [ $(OS_NAME) = "darwin" ]; then \
launchctl bootout gui/$$(id -u)/com.powellc.claude-save 2>/dev/null; \
launchctl bootstrap gui/$$(id -u) ~/Library/LaunchAgents/com.powellc.claude-save.plist && \
echo "claude: loaded com.powellc.claude-save"; \
fi
claude-save:
@cd $(CLAUDE_HISTORY_DIR) && \