Skip documentation navigation

Configuration

Every key and its default

KeyDefaultWhat it does
maxCommentLines2Line limit for one contiguous comment run.
maxFileLines300Line limit for a new file.
maxPrBodyParagraphs1Prose paragraph limit for a gh body.
maxPrBodySentences3Sentence limit for one paragraph of a gh body.
maxRetries2Denials on one target before the hook allows and flags it.
ignoreGlobs9 globsPaths exempt from every check.
checks.commentstrueRuns the comment length check.
checks.fileSizetrueRuns the file length check.
checks.prBodytrueRuns the gh body check.
scan.codeFilestrueRuns code-scope packs and dictionary entries over whole code files, string literals included.
scan.notebookstrueChecks notebook cells that NotebookEdit writes.
scan.heredocWritestrueChecks files that cat or tee writes from a heredoc, before the command runs.
scan.shellWritestrueChecks the lines a shell command added to files in a git work tree, after it runs.
scan.mcptrueChecks the text and files that MCP tools post or write.
scan.planstrueChecks the plan that ExitPlanMode shows for approval.
scan.taskstrueChecks TaskCreate and TaskUpdate text.
scan.questionstrueChecks AskUserQuestion questions and options.
stopHooktrueRuns reply checks on Stop and SubagentStop.
context.enabledtrueSends resolved rules at startup, resume, compaction, and subagent creation.
context.perTurnfalseAlso sends rules on UserPromptSubmit.
subagentStop.enabledtrueChecks subagent replies when stopHook is enabled.
subagentStop.exemptAgentTypes[]Agent types exempt from subagent reply checks.
testFilter.codexPostToolUsefalseOpts Codex into filtering completed test output instead of rewriting the command.
softFailfalseTurns every deny, ask, and block into a flagged allow.
styleIgnoreGlobs28 globsPaths exempt from the style checks only.
allowList.phrases[]Phrases that drop a finding on the line that holds them.
allowList.patterns[]Regex strings that drop a finding on the line they match.
bypass.phrases[]Phrases that exempt the whole tool call.
bypass.patterns[]Regex strings that exempt the whole tool call.
log.enabledfalseWrites one record per hook invocation.
log.pathnullLog file path. null uses ~/.cache/concise/concise.log.
log.maxSize"5m"Size that triggers rotation.
log.maxFiles5Rotated files kept.
log.rotate"size"size, daily, or both.
log.format"json"json or plaintext.
monitor.persistfalseAppends each hook record, with its request and response, to the project’s record file. When it is off, the hook appends records only while concise-web --all runs.
features.emDash.enabledfalseRuns the dash check.
features.emDash.enDashtrueFlags the en dash (U+2013) as well.
features.emDash.doubleHyphenfalseFlags -- between word characters or between spaces.
features.emDash.mode"confirm"confirm, ask, or deny.
features.emDash.repliestrueScans the agent’s final reply.
features.aiWriting.enabledfalseRuns the AI writing check.
features.aiWriting.preset"default"One of the 8 preset names.
features.aiWriting.categoriesnullAn explicit category list that replaces the preset’s list.
features.aiWriting.allow[]Words or phrases that are never flagged.
features.aiWriting.mode"confirm"confirm, ask, or deny.
features.aiWriting.repliestrueScans the agent’s final reply.
features.aiWriting.packs[]Extra pack files or directories.
features.aiWriting.excludePacks[]Pack ids to drop.
features.aiWriting.enablePatterns[]Category ids, pack ids, or tag:<tag> to add.
features.aiWriting.disablePatterns[]Category ids, pack ids, or tag:<tag> to drop.
features.aiWriting.options{}Script pack thresholds, keyed by pack id.
features.dictionary.enabledtrueRuns the dictionary check. It does no work until it has an entry.
features.dictionary.mode"confirm"confirm, ask, or deny.
features.dictionary.entries[]Terms to flag, each with its own match rule and fix. See dictionary.

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