Tool · pi · badlogic

grep

pi/grepCode search · primarysource@da840b621657checked 2026-09-05
What matters here2 of 3 invariants hold · 1 unverified

The facts the registry marks decision-changing, with how the other implementations answered. An invariant may be shown as pass/fail; a design choice never is, however unusual it looks.

Description, as the model sees it

Not recorded yet — the verbatim description has not been captured for this tool.

Registered schema

Not recorded yet — the schema as registered has not been captured for this tool.

Observed · Code search

compare all →
FactThis toolAcross all implementations
Shape3 of 3 recorded
What it searchesby-contentsrclike 9 of 20by-name ×9 · both ×1 +1
Tools per harnesstwo toolssrclike 18 of 20no search tool ×1 · one tool ×1
Search enginebundled ripgrepsrc
Downloaded on first use rather than vendored; the tool errors with "ripgrep (rg) is not available and could not be downloaded" if that fails, so it never silently falls back to something else.
like 6 of 19ripgrep ×2 · bundled fd ×1 +101 unverified
Query language2 of 2 recorded
Regex dialectRust regexsrc
A literal-string mode is available as a parameter, which is the escape hatch for a pattern the dialect will not take.
like 8 of 11varies by backend: Rust regex, git grep, POSIX, or JS RegExp ×1 · varies by backend: Rust regex, POSIX, or Python re ×1 +1
Case sensitivitysensitive, model can asksrc
ignoreCase defaults to false and is exposed as a parameter.
like 3 of 6always insensitive, not configurable ×2 · whatever is on the machine ×113 unverified
Result shape4 of 4 recorded
Line numbers in resultspath:N:src
Context lines use path-N- instead, so a match is distinguishable from its surroundings without counting.
like 2 of 11Line N: ×3 · line numbers, or paths only, or counts ×1 +5
Result cap100 matches or 30KBsrc
Whichever is hit first, plus a per-line character cap.
like 2 of 20100 files ×4 · 100 matches ×3 +10
Announces truncationinvariantholdssrc
Separate notices for the match cap, the byte cap and the per-line cap; the line-cap notice names the read tool as the way to see the rest.
all 18 hold1 unverified
How "no matches" readssentencesrc
"No matches found".
like 16 of 17empty stdout ×13 unverified
Agreement with read1 of 2 recorded
Search line N is read line Ninvariantholdssrc
Both 1-indexed; rg --line-number counts from one and pi's read tool takes a 1-indexed offset.
6 of 7 holdfalse ×12 unverified
Search counts as having read?2 others recordedno read tracking at all ×1 · yes — matched files are recorded as partial reads ×19 unverified
Scope2 of 3 recorded
Respects .gitignoreyessrc
Stated in the tool description the model sees, not only in the argv.
like 8 of 18no, deliberately ×2 · yes, plus .qwenignore ×2 +52 unverified
Searches hidden filesyessrc
--hidden is passed unconditionally.
like 7 of 14yes, except .git ×3 · no ×2 +26 unverified
Binary content never enters contextinvariant?2 of 3 holdtrue ×2 · false ×18 unverified
Ordering1 of 1 recorded
Result orderingripgrep traversal ordersrc
No --sort flag.
like 5 of 16modification time, newest first ×5 · bounded discovery order; newest-first on request ×1 +54 unverified

Other tools in pi

names verbatim, as registered