Skip to content

fix(service): re-add DISABLE_AUTOUPDATER=1 (supersedes #17)#18

Merged
crisandrews merged 1 commit intomainfrom
fix/reapply-disable-autoupdater
Apr 17, 2026
Merged

fix(service): re-add DISABLE_AUTOUPDATER=1 (supersedes #17)#18
crisandrews merged 1 commit intomainfrom
fix/reapply-disable-autoupdater

Conversation

@crisandrews
Copy link
Copy Markdown
Owner

Conflict-resolved version of #17. JD opened #17 based on pre-#8 main, so the insertion point collided with the newly-added Environment=HOME=/Environment=TERM= lines from #8. Same 8-line block, placed immediately after HOME/TERM so all three env vars sit together.

Accepting JD's rationale in full — #16 incorrectly treated DISABLE_AUTOUPDATER as redundant. PTY wrap and DISABLE_AUTOUPDATER fix two different problems:

The env var is a documented Claude Code interface, not a monkey-patch. Full reasoning in #17 stands.

macOS plist unchanged — same scope as JD's #17. Parity fix can follow if and when the systemd-side default settles. Co-authored with @JD2005L.

Closes #17.

Supersedes #17 (conflict resolution against post-#8 main). JD's #17
targeted pre-#8 main so the block collided with the newly-added HOME/TERM
Environment lines. This commit places the same 8-line block immediately
after HOME/TERM so systemd sees all three env vars side by side.

The rationale (verbatim from #17, which is correct):

PTY wrap and DISABLE_AUTOUPDATER fix different problems:
- PTY wrap: SessionEnd hook needs a controlling terminal to spawn
  /bin/sh at graceful shutdown.
- DISABLE_AUTOUPDATER: prevents Claude Code's in-process auto-updater
  from regenerating daemon-relevant files (including the
  resume-on-restart wrapper from #7) while the daemon is running.

#16 incorrectly treated DISABLE_AUTOUPDATER as redundant
defense-in-depth against the crash loop. It is actually addressing the
file-integrity scenario, which the PTY wrap does not cover. Setting
DISABLE_AUTOUPDATER is also using a documented Claude Code env var,
not monkey-patching internals.

macOS plist remains unchanged (JD's #17 scope; parity can follow once
the systemd-side default settles).

Co-Authored-By: JD2005L <34459020+JD2005L@users.noreply.github.com>
@crisandrews crisandrews merged commit 21c8c3a into main Apr 17, 2026
crisandrews added a commit that referenced this pull request Apr 17, 2026
Summary of changes in this release (full detail in CHANGELOG.md):

Added
- Resume-on-restart wrapper for service mode (#7)
- Service hardening defaults: HOME/TERM env, StartLimitBurst guard, persistent log path (#8)
- /agent:update skill + heartbeat version-check with day-gate and per-version dedupe (#12)

Fixed
- WORKSPACE resolution so memory_search hits user's project dir, not plugin dir (#6, closes #5)
- Linux systemd crash loop after Claude Code auto-updates mid-run — PTY wrap in ExecStart + DISABLE_AUTOUPDATER=1 for file-integrity (#9, #17/#18)
- macOS launchd PTY wrap parity (#16)
- Cross-user /agent:import discovery + post-import path sanity check (#10)

Performance
- reconcile-crons.sh fast-path on steady-state sessions (#11)

Thanks to @JD2005L for the whole batch.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant