Tool · OpenHands · OpenHands

grep

openhands/grepCode search · primarysource@07307cb8edfcchecked 2026-09-04
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.

How this differs from most implementations

Derived by comparing every recorded value against the other implementations of the same capability. Differing is not a defect unless the row is marked an invariant.

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 toolssrc
Separate glob and grep tools.
like 18 of 20no search tool ×1 · one tool ×1
Search engineripgrep, else system grep, else Python resrc
Backend is picked once at start-up by whichever binary is present (_select_search_backend).
only one of 19bundled ripgrep ×6 · ripgrep ×2 +101 unverified
Query language2 of 2 recorded
Regex dialectvaries by backend: Rust regex, POSIX, or Python resrc
The same pattern is handed to a different engine depending on what is installed on the machine. Nothing in the tool result says which one ran.
only one of 11Rust regex ×8 · varies by backend: Rust regex, git grep, POSIX, or JS RegExp ×1 +1
Case sensitivityalways insensitive, not configurablesrc
-i is hardcoded on both binary paths and re.IGNORECASE on the Python path; the model cannot ask for a case-sensitive search.
like 2 of 6sensitive, model can ask ×3 · whatever is on the machine ×113 unverified
Result shape4 of 4 recorded
Line numbers in resultsnone — file paths onlysrc
rg -l / grep -l. The model is told which files match, not where.
only one of 11Line N: ×3 · path:N: ×2 +5
Result cap100 filessrclike 4 of 20100 matches ×3 · 100 matches or 30KB ×2 +10
Announces truncationinvariantholdssrc
"[Results truncated to first 100 files. Consider using a more specific pattern.]"
all 18 hold1 unverified
How "no matches" readssentencesrc
"No files found containing pattern the pattern and directory named".
like 16 of 17empty stdout ×13 unverified
Agreement with read0 of 2 recorded
Search line N is read line Ninvariant—
No line numbers are reported, so there is nothing to disagree.
6 of 7 holdtrue ×6 · false ×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
Scope3 of 3 recorded
Respects .gitignorevaries by backend: yes under ripgrep, no otherwisesrc
rg honours .gitignore by default; grep -R and the os.walk fallback do not. Whether the agent can see an ignored file depends on the machine.
only one of 18yes ×8 · no, deliberately ×2 +52 unverified
Searches hidden filesnosrc
_path_matches_filters drops any path with a dot-prefixed component.
like 2 of 14yes ×7 · yes, except .git ×3 +26 unverified
Binary content never enters contextinvariantholdssrc
Only paths are returned, so no matched bytes reach the context window.
2 of 3 holdfalse ×18 unverified
Ordering1 of 1 recorded
Result orderingmodification time, newest firstsrc
--sortr=modified, re-sorted by st_mtime on every backend.
like 5 of 16ripgrep traversal order ×5 · bounded discovery order; newest-first on request ×1 +54 unverified

Other tools in OpenHands

names verbatim, as registered