Hacktoberfest 2026: the issues maintainers tagged for October, open and beginner-friendly. Browse Hacktoberfest issues

v7.40.4: `lifeos -s <missing file>` launches Claude without the constitution and without any warning

Open Beginner friendly
#2,255 1 comment 0 reactions 0 assignees View on GitHub

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

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from danielmiessler/LifeOS

All issues in danielmiessler/LifeOS

Similar issues

More TypeScript issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.