You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
code_ingest.exclude in .kin/config lists fnmatch globs that kin ingest code leaves out, on top of the built-in and Unity excludes rather than in
place of them. Patterns match each file's path relative to the git
repository root, so client/Assets/Licensed/* names the same files whether
the ingest targets the root or client/. A single string is read as one
pattern and an empty exclude: as none. The next full ingest retires nodes for files a new pattern covers
and restores them if the pattern is removed; nodes archived by hand stay
archived, and a run cut short by --limit retires nothing.
Optional known-secret masking. secret_mask: {files: [~/.profile]} in the
user config makes every value of a selected NAME=VALUE line become $NAME
wherever Kindex stores or shows text: all store writes, ingestion, MCP tools,
hooks, FTS and embedding inputs, and every output path, so older rows come
out masked too. keys selects names (case-insensitive substring, * glob;
default: names containing KEY, TOKEN, SECRET, PASSWORD and similar) and min_length (default 8) skips short values. A project's .kin/config
cannot set it. kin mask scan (MCP mask_scan) counts stored occurrences
per key name and location without printing values; --apply snapshots each
database, rewrites them, rebuilds FTS and requeues embeddings. kindex-lite
reads this one setting from the user config.
kin setup-muse-mcp registers kin-mcp as an optional stdio server in Muse's ~/.config/muse/settings.json (--uninstall, --dry-run). It refuses to write
while a legacy mcp_servers key is present, because Muse then ignores every MCP
server, and uses the absolute kin-mcp path because Muse passes MCP children a
small environment allowlist.
Turn-level conversation claims (conversations.claims, off by default). kin digest reads a user/assistant conversation message by message and
records atomic claims in place of its per-conversation facts, each tied to
the message it came from (its place in the conversation and its words).
Dialogue between named speakers keeps its facts. kin digest --claims gives
conversations digested earlier claims without digesting them again.
kin ask options, all off by default: ask.rank_order (evidence most
relevant first), position_order, position_labels, fact_sources (a
claim shown with the words it came from), surface_first / surface_first_asked (the earliest matching statement instead of the
latest), and evidence_only (return the assembled evidence with no answer
or verification call).
Reasoning effort none is accepted by ask.effort, plan_effort and hard_effort.
Changed
Supervisor health counts Kindex use by a Claude session's subagents as use by
the session, so a session that delegates its Kindex work is no longer
reported missing_use. A recent session's subagents/agent-*.jsonl files
are scanned for Kindex calls only: their work does not make the session look
active, they never form a session of their own, a row naming a different
session than its directory is ignored. The newest 16 per session (64 in all)
are read; older ones are skipped, never a reason to report Claude
observation unavailable. A flat agent-*.jsonl beside the sessions is no
longer read as a session.
Fixed
Under a bound root, kin config set --global and kin profile create no
longer write the real $HOME/kin.yaml when the root's config directory
cannot be created (a .config that is a file, say); they write <root>/kin.yaml. kin profile create --config resolves its path beneath
the bound root, as kin config set --config already did.
kin setup-codex-hooks says that Codex runs new or changed hooks only once
they are trusted, at its startup review prompt or in /hooks; until then
they do not run, SessionStart included.
Supervisor health no longer raises observation_unavailable for a healthy
Claude session whose first prompt (a pasted image, say) is larger than the
64 KiB the checker reads from the start of a transcript. It takes the
session's project and id from the latest rows instead, if they match.
A model that rejects a low reasoning effort (minimal, none) keeps the
higher efforts it accepts. The rejection used to mark the model as taking no
effort at all, so every later call on it, high-effort ones included, was
sent without one.
An ignored reminder no longer re-notifies every 20 minutes forever. Each
consecutive automatic snooze doubles the last (15 min, 30 min, 1 h, ...) up
to reminders.auto_snooze_max (default 24 h). A manual snooze, or a
recurring reminder's next occurrence, starts the backoff over.
Packaged Claude plugin hooks expand ${CLAUDE_PLUGIN_ROOT}. The generated
commands single-quoted it, so bash ran the literal path relative to the
session's cwd and every hook failed with "No such file or directory".