private-repo-search · git:20260725.3f0d943 · 2026-07-25 · sha256 2edc9b98bfe0f996
private-repo-search git:20260725.3f0d943A
Immutable. This exact content is served forever at /api/v1/blob/2edc9b98bfe0f996.
--- name: private-repo-search description: > Use when you need to find code, a pattern, or a past implementation across GitHub repos — including private ones you have access to — not just the current working directory. grep/Glob only reach the checked-out repo; this reaches everywhere `gh` is authenticated for. Own version of the dx plugin's `/dx:private-github-search`. --- # Private Repo Search `gh search code` — GitHub's code search API through the CLI you already have authenticated, scoped to exactly the repos/orgs you need instead of a raw `gh api` call. ## Prerequisites Requires the [`gh` CLI](https://cli.github.com) installed. ```bash gh auth status # confirm authenticated; code search needs no extra scope beyond default ``` ## Core usage ```bash gh search code <query> [flags] ``` | Flag | Use for | |---|---| | `--owner <org-or-user>` | Scope to everything an org/user owns | | `--repo <owner/name>` (repeatable) | Scope to specific repo(s) | | `--language <lang>` | Filter by language | | `--filename <name>` | Filter by filename (e.g. `package.json`) | | `--extension <ext>` | Filter by file extension | | `--match file\|path` | Restrict the match to file contents or the path itself | | `--json path,repository,sha,textMatches,url` + `-q <jq-expr>` | Structured output for scripting | | `-L, --limit <n>` | Result cap (default 30) | ```bash # Find where a symbol is used across every repo in an org gh search code "someFunctionName" --owner patrickserrano # Narrow to specific repos and a language gh search code "RLSPolicy" --repo patrickserrano/harness --language go # Find a config file by name across everything you can see gh search code --filename .lacquer.toml # Machine-readable output for a downstream step gh search code "TODO(migration)" --owner patrickserrano --json path,repository,url -q '.[] | "\(.repository.nameWithOwner): \(.path)"' ``` ## After finding a hit `gh search code` returns matched paths, not full file content. Fetch the actual content once you know the repo and path: ```bash gh api repos/<owner>/<repo>/contents/<path> --jq '.content' | base64 -d # or, simpler for a quick look: gh api repos/<owner>/<repo>/contents/<path> -H "Accept: application/vnd.github.raw" ``` ## Caveats - **Results lag behind pushes.** The index isn't real-time — a just-pushed commit may not show up for a few minutes. - **Legacy search engine.** `gh search code` uses GitHub's older code-search API, not the newer engine github.com's web UI uses — results and available qualifiers (no regex) can differ from what you'd see in the browser. - **Scope is "everywhere `gh` can see."** A search with no `--owner`/`--repo` filter that returns nothing from a private repo you expect usually means an auth/visibility gap, not that the content isn't there — check `gh auth status` and repo access before concluding a miss is real.