Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add commands/bogzx/seeks/newgit clone --depth 1 https://github.com/Bogzx/seeksWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.00026 | $0.03383 |
| Opus 5 | $0.00013 | $0.01691 |
| Sonnet 5 | $0.00005 | $0.00677 |
| Haiku 4.5 | $0.00003 | $0.00338 |
Grade C, and why
new scanned grade C with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Asks for rootmediumPrivilege escalation
A mod that escalates privileges can change anything on the machine, not only the project.
> **Preflight (do this first).** Run `node "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" preflight`. If `ok` is false, surface the `hint` and **offer to fix it before going further** (the loop is dead without it): for a version- Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
> **Preflight (do this first).** Run `node "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" preflight`. If `ok` is false, surface the `hint` and **offer to fix it before going further** (the loop is dead without it): for a version- How it starts
The opening of the file, as written. The whole thing — 24 lines — stays where its author put it; the contents beside it link to each section on GitHub.
The goal is: $ARGUMENTS. Self-contained; run shell via the Bash tool.
Shell discipline: the Bash tool's cwd persists across calls — never bare-
cd. Wrap any worktree-scoped command in a subshell( cd "$WT" && … ), or usegit -C "$WT" …/ absolute paths. (A leakedcdmakes later relative-pathfind/check-ignoreresolve in the wrong tree.)
Preflight (do this first). Run
node "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" preflight. Ifokis false, surface thehintand offer to fix it before going further (the loop is dead without it): for a version-manager node, either symlink it onto a system PATH (sudo ln -s "$(command -v node)" /usr/local/bin/node) or add"env": { "PATH": "<dir-of-node>:/usr/bin:/bin" }to~/.claude/settings.json(you may edit that file with consent). Re-runpreflightuntilok:true, then continue. (This is the #1 install failure — catch it here, not as a cryptic "Stop hook error" mid-run.)
- Name the loop (
<name>). If$ARGUMENTSis empty → ask "what should this loop achieve?" and use the answer as the goal. If$ARGUMENTSis a single bare token with no spaces → treat it as the name and ask for the goal. Otherwise derive a short kebab-case<name>(≤4 words) from the goal — e.g. "fix the auth timeout bug" →fix-auth-timeout, "raise test coverage to 90%" →raise-coverage. Tell the user the chosen name and that they can rename ("call it X instead"). Use that literal<name>everywhere below. - Intake (one question at a time): you already have the goal — confirm/sharpen it. Disclose what seeks will do to their code and pick the level (→
spec.mdfrontmatter, default L2): say it plainly — "I'll edit your code and commit on an isolated branchseeks/<name>that I never push or merge — that's L2, the default. Prefer report-only with no edits? say L1." These levels are now hard-enforced by a PreToolUse hook (not just guidance): at L1 the maker truly cannot edit source or commit, and at no level can the edit tools touch denylist paths, leave the worktree, or hand-write loop state — nor can Bashgit push/merge/rebase. (Bash is otherwise unpoliced; reads are never blocked.) Want it to deliver on its own? L3 — on done it pushesseeks/<name>and opens a PR for you to merge (it still never merges tomainitself); ifgh/a remote aren't available it keeps the branch locally. For fully unattended L3 runs people often launchclaudeinbypassPermissions— say plainly what that costs: the seeks PreToolUse denials still fire (edits, loop state,git push/merge/rebase), but every other Bash command is auto-approved with no human in the loop, and Bash is not otherwise policed by default. If the goal or the repo is not fully trusted, offerSEEKS_STRICT_BASH=1(or setstrict_bash:truein theinitJSON at step 6, plusstrict_bash_allowfor any extra commands the done-conditions need) — Bash then becomes deny-by-default against an allowlist. Say honestly that it is an allowlist and not a sandbox (node -eis still reachable), and that a container is the only real guarantee. Then get executable done-conditions (each:id, command, expected exit/output). Detect first, don't interview cold — by READING the repo, not a hardcoded language list: look at the CI config (.github/workflows/*.yml,.gitlab-ci.yml— therun:steps are the project's own definition of passing), then any command-runner the author defined (package.jsonscripts,Makefile/justfile/Taskfiletargets), then the language's own test/build invocation if obvious from the manifest. This works for any language — infer it, don't rely on a built-in toolchain table. Propose what you found in one line ("CI runsnpm testandtsc --noEmit— use these? [Y]") and only fall back to interviewing if you genuinely can't find a runnable check. Subjective acceptance → markhuman-required. Refuse to proceed until ≥1 runnable check exists (or all are human-required).- Effort / time budget. Ask: "How hard should this run — quick, thorough (default), or overnight/?" Map: quick → low cap, no clock; thorough → defaults; overnight/custom → parse the duration (e.g.
8h→28800) and puttime_budget_sec+effort:"overnight"in theinitJSON (step 6). A time budget is a hard ceiling enforced by the Stop + PreToolUse hooks regardless of whether the agent yields —/seeks:startstamps the clock, so it counts from each start. As the deadline nears (last ~15%), the loop enters a wind-down: it stops new work, writessummary.md, and commits, then the clock halts it with a⏰summary banner (found / open / depth). Warn the user if the chosen budget is under ~3 minutes — that's shorter than one pass, so it may halt before any finding lands; suggest a larger budget but proceed if they insist. - Artifact/report goals (e.g. "find bugs", audits — no runnable oracle, only a produced artifact): a "report exists + contains
file:line" check proves shape, not truth, and a naive user over-trusts the green. So additionally require inspec.md: (a) a report template — every finding citesfile:line+ reasoning + a repro/anchor (the triggering input, or the exact code path); (b) a verifier spot-check condition — the verifier opens the cited source for ≥N findings (default 3, or all if fewer), confirms each claim is actually supported there, and rejects the artifact if any cited location doesn't back the finding. Tell the user plainly: seeks certifies the artifact (shape + spot-check); the human owns full validity. - Open-ended goals ("fix all bugs", "fix/find every X" — no single terminating oracle): EXPAND them so the loop READS the code and hunts real defects, not just chases a green tool. (a) Discovery = creative code review. Each per-pass sweep reads the source in the blast radius and reasons about correctness like a skeptical reviewer — logic / off-by-one, boundary/operator mistakes, unhandled
None/empty/error paths, bad parsing, timezone/encoding/locale bugs, resource leaks, races, auth/injection gaps. The toolchain (ruff+mypy+pytest;dotnet build;npm test) is the regression floor — fixes must keep it green — it is NOT the bug finder. (b) Setmin_dry_sweeps(default 2): the loop must do two consecutive creative read-throughs through different lenses that surface no new real bug before it can certify (the engine rotates lenses — concurrency, error-handling, boundary, resource-lifecycle, serialization, input-trust — and a repeated lens won't count toward "dry"). Optionally setsweep_lensesto tailor/weight the set per language. (c) Raisemax_iters(e.g. 200) and optionally a wall-clocktime_budget. For an overnight/exhaustive run setexhaustive:true+min_dry_depth_rounds:2and seedsweep_lenses= the base catalog plus 3-6 goal-tailored views (a scraper →time-timezone,encoding-locale,relative-url; a web app →security-authz,session,csrf) — the loop then covers every view and deepens (depth 1 logic → 2 dataflow → 3 adversarial/probing-tests) until the time budget halts it, instead of stopping after two dry sweeps. In exhaustive mode the certification bar isdry_depth_rounds(a full-catalog-dry pass, twice) — the gate ignoresmin_dry_sweepsthere, so anymin_dry_sweepsyou also set is informational only. The driver decides when to verify viaseeks sweep-status(the gate's own predicate), so the two never diverge; tell the user an exhaustive run usually ends at the time budget (⏰ haltwith a findings summary), not a clean✅ done— reachingdonerequires the whole catalog to come up dry at increasing depth, which a rich codebase rarely does before the clock. Also setgoal_mode:"open_ended"(a targeted goal staysgoal_mode:"targeted",min_dry_sweeps:0, no catalog sweep). (d) Require the verifier to spot-check that each fixed bug was real (citefile:line+ why), per the artifact-goal rule above. (e) Rewrite the terse goal into a richspec.md— blast radius, the creative-review strategy, the regression floor, the budget. Tell the user: seeks reads the code and keeps hunting until two review passes come up empty — it will not stop after one fix or settle for "tests pass".
- Effort / time budget. Ask: "How hard should this run — quick, thorough (default), or overnight/?" Map: quick → low cap, no clock; thorough → defaults; overnight/custom → parse the duration (e.g.
- Recipe
.seeks/loops/<name>/spec.mdwith frontmatterlevel(default L2) and a## Done-conditionslist (+ a## Report templatesection for artifact/report goals, per step 1). Also pass the conditions as structured data in theinitJSON:conditions: [{id, cmd, expect, human_required}](subjective acceptance →human_required:true, nocmd).initrefuses a loop with no runnable check and nohuman_requiredfallback, and the gate never lets a no-check loop reportdone— it escalates to needs-human. (Iforacle_globswould match zero files for a "make tests pass" goal, flag it.) - Tier + config. Resolve the usage tier:
node "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" tier-get. If it printsnone, this is the user's first loop — explain the three tiers (Light = conserve usage: all-sonnet + haiku triage, low caps; Balanced (default) = maker & verifier on opus, intake/analyzer on sonnet; All-out = opus everywhere, verifier at max effort, high caps + deeper sweeps) and ask them to pick, thennode "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" tier-set <light|balanced|all-out>and re-runtier-get. (You may also ask "use a different tier for just this loop?" and use that tier's preset instead — affects only this project.) Thetier-getJSON givesroles,max_iters,max_iters_openended,min_dry_sweeps. Then — if.seeks/config.jsonis absent, create it with defaults:{"default_level":"L2","max_iters":<the tier's max_iters — open-ended/"fix all" goal ? max_iters_openended : max_iters>,"stuck_threshold":3,"condition_reject_threshold":3,"lock_stale_ttl_sec":600,"base_ref":"<current branch fromgit rev-parse --abbrev-ref HEAD>","denylist":["**/.env","**/secrets/**",".git/**"],"roles":<the active tier'srolesobject fromtier-get>}. The loop'slevel,oracle_globs(defaults to common test patterns), anddenylistare persisted intostatus.jsonatinitso the PreToolUse enforcement hook can read them. - Analyze — dispatch the analyzer as a subagent using the analyzer role's model (
node "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" role analyzer→{model,effort}): edge-trace imports/refs/call-sites from the goal (not a keyword scan); write.seeks/run/<name>/context.md(depth-capped). - Worktree —
git worktree add .claude/worktrees/<name> -b seeks/<name> "$(git rev-parse --abbrev-ref HEAD)". Ensure.gitignorecontains/.seeks/run/and/.claude/worktrees/(append any missing line). - Scaffold —
node "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" init <name> '{"loop":"<name>","armed":false,"done":false,"verifier_certified":false,"open_items":0,"items_closed_total":0,"no_progress_count":0,"condition_rejects":{},"dry_sweeps":0,"min_dry_sweeps":<the tier's min_dry_sweeps for an open-ended/"fix all" goal; else 0>,"base_ref":"<current branch fromgit rev-parse --abbrev-ref HEAD>","worktree_path":"<ABS path of .claude/worktrees/<name>>","max_iters":<the tier's max_iters_openended for an open-ended goal; else its max_iters>,"stuck_threshold":3,"condition_reject_threshold":3,"lock_stale_ttl_sec":600,"level":"<L1 or L2 from spec frontmatter; default L2>","denylist":<the denylist array from config.json>}'. Thenbacklog-addeach starter item; reconcilenode "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" status-set <name> "{\"open_items\":<count>,\"open_items_prev\":<count>}"; pin the basenode "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" base-record <name>(recordsbase_shafor the freshness check). Write an initialstate.md. - On any failure, roll back via Node:
node "${CLAUDE_PLUGIN_ROOT}/bin/seeks.mjs" gc <name>(removes worktree+branch+run dir; keepsspec.md). Report the failure.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago First seen · 24 lines · 26 tokens per session scan C eb814b963ca9
new is a command published in the GitHub repository Bogzx/seeks (4 stars, last pushed 15d ago), licensed MIT. It adds 26 tokens to every session and 3,383 once invoked, about $0.0001 per session on Opus 5. A static security scan graded it C with 2 findings (asks for root, reads agent configuration directories). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-31.
Other commands, from other repositories
nio
Nio — scan code, evaluate an action, read the audit report, manage config.
hs
Hardstop - Pre-execution safety layer for shell commands. Shows status and help.
log
Show Hardstop audit log entries.
skip
Skip Hardstop safety check for the next command only.
off
Disable Hardstop protection temporarily.
status
Show Hardstop current status and statistics.