Skip documentation navigation

Configuration

Copy .claude/concise.json.example to .claude/concise.json (Claude Code) or .codex/concise.json (Codex) in your project, then edit the keys below. If both files exist, .claude/concise.json wins.

  • Every key and its default

    The default ignoreGlobs list: /node_modules/, /vendor/, /dist/, /build/, /.next/, **/*.generated.*, **/*.min.js, /package-lock.json, /*.lock.

  • The five layers

    The hook reads config from 5 layers, lowest first.

  • Merge rules per key

    A config file or a BEC_CONFIG_JSON value that does not parse as a JSON object is skipped.

  • checks, scan, and stopHook

    Each core check has its own switch under checks: comments, fileSize, and prBody, all true by default.

  • Lifecycle context and host hooks

    SessionStart sends the resolved limits, enabled style checks, and escape hatches on startup, resume, clear, and compact, and in Claude Code on fork.

  • Optional Claude model checks

    Generate one optional evaluator from the current project configuration, using the installed plugin path:

  • mode

    mode is set per feature, under features.emDash.mode, features.aiWriting.mode, and features.dictionary.mode.

  • dictionary

    features.dictionary.entries lists terms to flag.

  • allowList and bypass

    allowList.phrases and allowList.patterns drop single findings.

  • softFail

    "softFail": true, or BEC_HOOK_SOFT_FAIL=1, turns every deny, every ask, and every Stop block into an allow that carries the same text, prefixed [concise] soft-fail:.

  • ignoreGlobs and styleIgnoreGlobs

    ignoreGlobs exempts a path from every check.

  • log

    "log": { "enabled": true }, or BEC_LOG_ENABLED=1, writes one record per hook invocation.

  • monitor

    Every hook call registers its project in ~/.config/concise/projects/<folder>-<hash>.json ($XDG_CONFIG_HOME when set) with the real path, the name, the first and last time seen, the path of its record file, and the git repository that holds it (repo: name, root, worktree name, and subdirectory, or null).