v7.40.4: `lifeos -s <missing file>` launches Claude without the constitution and without any warning
Maintainers usually reply within 4 days
Nobody has claimed this yet.
Assessment
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Newbie friendliness
- 78/100
- Issue type
- Bug
- Clarity
- Clearly specified
- Activity status
- Active
- Tech stack
- bun, typescript
- Domain
- cli
Research direction
Start in LIFEOS/TOOLS/lifeos.ts at lines 504 and 705, then run the supplied stub-claude reproduction for existing and missing system-prompt paths. Verify both interactive and one-shot invocations no longer silently start without the constitution; done means the chosen refusal or warning behavior names the missing path and is consistent in both paths.
Written by the indexing model from the issue text.
Description
Version
LifeOS 7.40.4 (tag commit be9e8ef) / launcher (LIFEOS/TOOLS/lifeos.ts)
What is broken
The lifeos launcher is the documented way to load the constitution (INSTALL.md step 7: "The launch command loads the constitution — don't skip it"). When the system-prompt file passed with -s does not exist, the launcher silently omits --append-system-prompt-file, still prints the full LifeOS banner, and starts claude without the constitution. Nothing on stdout or stderr says the constitution was not loaded, so the session looks like LifeOS but has no constitutional layer. This conflicts with the doctrine that missing capabilities "must degrade loudly, not silently" (GETTING-STARTED.md).
Where (file:line)
LIFEOS/TOOLS/lifeos.ts:504: if (existsSync(systemPromptFile)) { args.push("--append-system-prompt-file", systemPromptFile); } has no else branch. By source, the one-shot prompt path at :705 uses the same pattern, and the no--s case (default ~/.claude/LIFEOS/LIFEOS_SYSTEM_PROMPT.md missing) takes the same branch; neither variant was run.
Repro on a clean tree
# any 7.40.4 install; a stand-in `claude` records the arguments it receives
stub="$(mktemp -d)"
cat > "$stub/claude" <<EOF
#!/bin/sh
printf '%s\n' "\$@" > "$stub/argv"
EOF
chmod +x "$stub/claude"
# control: existing file -> flag passed
PATH="$stub:$PATH" bun ~/.claude/LIFEOS/TOOLS/lifeos.ts -s ~/.claude/LIFEOS/LIFEOS_SYSTEM_PROMPT.md; cat "$stub/argv"
# --append-system-prompt-file
# /home/you/.claude/LIFEOS/LIFEOS_SYSTEM_PROMPT.md
# missing file -> banner printed, no flag, no warning
rm -f "$stub/argv"
PATH="$stub:$PATH" bun ~/.claude/LIFEOS/TOOLS/lifeos.ts -s /nonexistent/prompt.md; cat "$stub/argv"
# (empty: claude was started with no arguments)
Negative control
On unpatched 7.40.4 (Ubuntu 26.04 arm64, bun 1.4.2), the second invocation prints the LifeOS banner and starts claude with an empty argument list and no warning, while the first (control) invocation passes --append-system-prompt-file <path>. A mistyped path in a hand-written alias, or an install whose LIFEOS/ tree moved, therefore launches an un-constituted session that looks like LifeOS.
Suggested fix
Untested: when the system-prompt file does not exist, refuse to launch (or print a prominent warning naming the missing path), in both the interactive and prompt paths.
Before submitting
- I searched open and closed issues for this defect.
- The repro runs against a clean tree of the version above, not against my modified install.
- I removed personal data from the pasted output — real names, absolute home paths, tokens, my own content.
- Dominant language
- TypeScript
- Stars
- 19.2k
- Forks
- 2.5k
- PR merge metrics
- No merged PRs in 30d
Getting set up
This project ships no dev container, Dockerfile or contributing guide, so setting up is up to you: start from its README, and see our first-contribution guide for the general steps.
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from danielmiessler/LifeOS
-
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
danielmiessler/LifeOS#2262 ·
Maintainers usually reply within 4 days
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
danielmiessler/LifeOS#2261 · 1 comment ·
Maintainers usually reply within 4 days
-
Difficulty 1/5 Under an hour Newbie friendliness 92/100
danielmiessler/LifeOS#2260 ·
Maintainers usually reply within 4 days
-
Difficulty 2/5 1-3 hours Newbie friendliness 86/100
danielmiessler/LifeOS#2251 ·
Maintainers usually reply within 4 days
-
Difficulty 1/5 Under an hour Newbie friendliness 95/100
danielmiessler/LifeOS#2250 ·
Maintainers usually reply within 4 days
All issues in danielmiessler/LifeOS
Similar issues
-
Mend: dependency security vulnerability untriaged
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
opensearch-project/security-dashboards-plugin#2545 ·
Maintainers usually reply within 1 day
-
Add: Dream TR SDOpencheck:passed streams:add
Difficulty 2/5 1-3 hours Newbie friendliness 70/100
Maintainers usually reply within 1 day
-
doctor integrity sample scans soft-deleted pages on Postgres (batch path has no deleted_at filter)Open
Difficulty 2/5 1-3 hours Newbie friendliness 88/100
Maintainers usually reply within 1 day
-
Difficulty 1/5 Under an hour Newbie friendliness 72/100
SocialGouv/egapro#4672 · 1 comment ·
Maintainers usually reply within 2 days
-
area:agents area:tui bug
Difficulty 2/5 1-3 hours Newbie friendliness 74/100
anthropics/claude-code#98358 ·
Maintainers usually reply within 1 day