From f1b430ea5b3ec425cbd4f4b357d3e8db8cf39410 Mon Sep 17 00:00:00 2001 From: Lily Dayton Date: Sun, 23 Aug 2026 13:53:06 +0000 Subject: [PATCH] Stop the claude wrapper printing build-settings' result build-settings echoes `unchanged` or `updated` as a result for install.sh and the ansible role to read, not as a message. The wrapper called it bare, so that word printed on every session start, landed in the capture whenever stdout was redirected (`claude -p ... > out`), and was wiped by the fullscreen TUI a moment later regardless. Errors are unaffected: build-settings reports those on stderr and the wrapper still refuses to start on a non-zero exit. Claude-Session: https://claude.ai/code/session_01ScFjFLyZCsRoxBz2Jt5CPy --- zsh/zshrc | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/zsh/zshrc b/zsh/zshrc index 0d8964b..1f858b2 100644 --- a/zsh/zshrc +++ b/zsh/zshrc @@ -100,7 +100,11 @@ claude() { mkdir -p ~/.claude # settings.json is generated rather than linked, so the file Claude Code writes into is # not one git tracks. build-settings carries `model` across the rebuild. - build-settings || return 1 + # + # Its stdout is `unchanged` or `updated`, a result for install.sh and the ansible role to + # read -- not a message. Here it would print on every launch, land in the capture when + # stdout is redirected (`claude -p ... > out`), and be wiped by the fullscreen TUI anyway. + build-settings >/dev/null || return 1 # Build to a temp file and move it into place: `>` truncates before cat runs, so a # missing or renamed base file used to leave a zero-byte CLAUDE.md. The mv also makes # this safe when two shells start at once.