v0.15.1 fixes how seek limits and prints per-file matches. It also narrows seek-router to shell searches that it can rewrite without changing their meaning. This release does not change CLI flags, query syntax, the index format, or the cache layout.
Match output
- Within each file, seek now keeps the highest-scored distinct source lines before it applies the per-file
-mlimit. It then prints those lines in source order. - Duplicate matches for one source line combine their highlight fragments. Overlapping context prints each line once, hidden-match notices count distinct dropped lines, and formatting does not modify the caller's result data.
Router
- The hook routes one static
Bashcommand: recursivegrepwith at least one explicit path, orrgwith optional paths. A pathlessrgcall gets.. - Flags must come before the pattern. Routed
grepsupportsr,n,H,I,F,E, andi; routedrgsupportsn,H,I,F, andi. A pattern can contain ASCII letters, digits,_,/, and-. A path can also contain.. Neither can start with-. - Each rewrite uses
-n 20 -m 3, so it returns at most 20 files and three matches per file. The-iflag becomescase:no; other routed searches usecase:yes. Directseekcalls remain unlimited by default. - Other commands and syntax run unchanged. Compared with v0.15.0, this includes
git grep, searches with file filters, pipelines tohead, and phrases such asfunc Name; call seek directly forsym:Name. Regular-expression operators, globs, variables, redirects, and compound commands also bypass the router. - The router requires
seekandjqonPATH. Once invoked, it exits without a hook decision if a dependency is missing or it cannot parse or route the command. The original command then runs. A rewrite changes onlytool_input.commandand preserves the other Bash input fields.
For an exhaustive shell search, bypass the router for one call:
SEEK_ROUTER=off grep -rn 'PATTERN' .Set SEEK_ROUTER=off in the agent's environment to disable routing for the session.
Plugin and upgrade notes
- One shared
Bashhook replaces six entries. Codex no longer starts the router six times for each Bash call, and Claude Code runs one check. The repo-local Codex hook now uses the supportedtimeoutfield, with a 10-second limit instead of the default 600 seconds. - All three plugin manifests use version
0.2.0. A new Codex manifest declares the bundled skill, and Agent Plugins uses its fixedskills/directory. The install command iscodex plugin add seek-router@seek. - CLI users need no configuration or data migration.
Validation
Local validation passed: the full Go test suite, focused race tests, go vet, golangci-lint, all 76 router cases under sh and dash, ShellCheck, and Claude plugin validation.
Full changelog: compare v0.15.0...v0.15.1