Skip to content

Troubleshooting

Audience: a user on a starter install who saw a message and wants to know what it means.

How to use this page: search it for the message you saw. Each row starts with the message as himmel prints it, where <branch> or <n> stands for a value from your project. The row says why you see it and what to do.

Refused by a guardrail? A hook or git gate that stops an edit, a commit on main or a push to main is covered on When a guardrail stops you. This page does not repeat those refusals.

Want a health check? Run /himmel-doctor in Claude Code. It prints a report grouped by severity, and each finding names its own fix. The findings a starter install can show are in Checking the install.

While installing

What you seeWhyThe fix
WARN: 'bun' not found — qmd search will be skipped;qmd, the local notes search, runs on bun. A starter install does not use it.Nothing to do. To add notes search later, install bun from https://bun.sh and run the install again.
The install is uncommitted on <branch>, which the git gates now refuse commits on.The install did not commit itself: you answered no, or it ran without a terminal and could not ask. The git gates it just installed refuse commits on the default branch the message names, apart from this one.Run the command printed on the next line, Commit it once with: …. It makes the one allowed commit on that branch.

Starting a worktree

What you seeWhyThe fix
WARN new-worktree: no 'origin' remote - branching from local '<branch>'The project has no origin remote, so the new worktree branches from your local default branch (main or master), the one the warning names.Nothing to do for a local project. Once the project has a remote that holds its default branch, run git remote add origin <url> and git fetch origin; later worktrees branch from the remote copy of that branch.
WARN new-worktree: uniqueness-vs-merged-PR check skipped (forge unreachable)Before it creates a branch, scripts/worktree.sh asks the forge whether a merged pull request already used the name, and got no answer: there is no GitHub remote, gh is missing or signed out, or the forge timed out.Nothing to do: the check is skipped, not failed, and the worktree is still created unless a later step fails. The check runs again once the forge answers; for a GitHub project, gh auth status should show you signed in.

Committing

What you seeWhyThe fix
COMMIT REJECTED: no ticket reference matched:Every commit message needs a ticket reference by default. The pattern printed right after the message is the one in force. On a starter install it is # and a number, such as #1; your own pattern, a Jira project key or a tracker prefix changes it.Add a reference that matches the printed pattern, for example git commit -m "feat: add hello #1". To drop the rule for every project on this machine, run himmelctl config set commit.tracker none.
COMMIT REJECTED: message does not match conventional commit format.Commit messages follow the conventional format type(scope): message, with a type such as feat, fix, docs or chore.Reword the message, for example git commit -m "docs: explain the setup #1". The refusal lists every type it accepts.

Checking the install

himmelctl status lists every item the install manages. Each row is green, degraded, red or n/a.

What you seeWhyThe fix
of them desired but not set up: see the n/a rows aboveYour install profile asks for these items, but they are not set up yet. On a starter install most are opt-in, such as the Jira keys, or appear on first use, such as the handover folder.Read the n/a rows: each names what turns it green. An opt-in item you do not use can stay n/a.
<n> himmelctl install/wiring finding(s) (delegated from 'himmelctl status --json')/himmel-doctor found items that himmelctl status reports red or degraded.Run himmelctl status to see them, then himmelctl ensure in a terminal (himmelctl ensure --yes without one). It installs or rewires each finding it has an action for and prints a hint for the rest, which you fix by hand.
hook(s) wired to a bare interpreter not installed on this host:A hook in your settings starts with a program this machine lacks, so every session prints <interp>: command not found and the hook never runs.Install the program it names, or run the install again so it rewires the hook.
plugin(s) enabled but not installed:Your settings turn on a plugin that Claude Code has not installed.Install it with claude plugin install <id>, or set it to false in the settings file the finding names.