Skip to content

CLAUDE.template.md recommends per-project CLAUDE.md files that the lifeos launcher prevents from loading (chdir to install root unless --local) #2176

Closed

Description

@selinium

Summary

CLAUDE.template.md § Project-Specific Rules tells the user to put project-scoped rules in a CLAUDE.md beside each project. The lifeos launcher changes directory to the install root before starting the session, and Claude Code reads CLAUDE.md from the working directory and its ancestors. A project directory outside the install root is neither, so those files do not load in a normally-launched session.

Checked against main at 5e2f2e8c, LIFEOS/VERSION 7.40.4.

Detail

The template says:

Drop project-scoped CLAUDE.md files alongside each project (e.g. ~/code/your-project/CLAUDE.md) for rules that only apply inside that codebase. Claude Code merges them with this global file when sessions start in that directory.

The last clause is the caveat, and it is doing a lot of quiet work.

LIFEOS/TOOLS/lifeos.ts calls process.chdir(CLAUDE_DIR) at line 541 in the launch path, and again at line 709. So sessions start in the install root unless --local is passed, which is documented at line 14 as "Stay in current directory (don't cd to ~/.claude)".

The advice is correct and --local is the supported way to get it. But someone who reads the template and writes the files sees no error and no effect, and has no obvious way to discover why.

Suggested fix

One sentence appended to that section, for example:

These load only when the session starts inside that directory. lifeos changes to the install root by default, so use lifeos --local from the project directory when you want them.

lifeos --help mentioning the same thing beside the --local line would help too, since that is where someone looking for the answer would land second.

Why it seems worth saying

This compounds with the listProjects() parsing bug in #2175. Project rules have no working home by default, and the router that would otherwise route them to one returns an empty list, so both paths point project-scoped rules at the one file every session loads.

On the install where this surfaced, that file had reached 65 KB and the project registry 72 KB. Fixing either issue alone still leaves the other funnel open.

Activity

  1. danielmiessler commented on Oct 3, 2026

    @danielmiessler
    Owner

    Thanks @selinium. The template's Project-Specific Rules section now says those files only load when the session starts in that directory, and that lifeos --local from the project directory is how to get them. The --local line in the lifeos.ts header says the same. Next release carries it.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions