Short answer
Grep finds the line; the cost is what comes next, when the agent opens the whole file to understand the match. On Hugging Face's 4,639-line trainer.py that read costs 57,058 tokens, and Pixel's answer to the same question 1,649. pixel search-content keeps grep's regex syntax, so the agent changes nothing but the bill.
Side by side
Measured from the baseline. Grep is where the measurement starts: the match, then the file read it leads to, against Pixel's answer.
| Measure | Pixel | grep |
|---|---|---|
| Finds the matching line | Yes, regex syntax kept | Yes |
| What the agent reads to know what trainer.py contains | 1,649 tok | 57,058 tok, the whole file |
| Less read across 8 well-known files | 79.7 to 97.2% | The baseline |
| Callers, blast radius, Git history | Yes | No |
| Index to build first | Yes, in .pixel/ | None |
Every figure above is on the benchmarks page, with its sample size, its method and the cases where Pixel loses.
Where grep wins
Nothing to install and no index to build: it runs on any file, anywhere, the moment it exists.
How they differ
Grep, ripgrep and an agent’s built-in search return matching lines, and the agent then opens the file around the match to understand it. That read is what costs tokens. pixel search-content takes the same regular expressions and returns the matches from the index; pixel list-signatures gives what the file contains without reading it whole, and pixel who-calls answers the next question without a second search.
Choosing
Keep grep for a quick look in a directory Pixel has not indexed, or at a file that did not exist a second ago. Use Pixel when the agent would otherwise open whole files to understand what it found.