Saved searches and contexts
Saved searches keep queries you come back to and can watch them for you. Contexts give a set of repositories or filters a short name you can drop into any query.
Saved searches
Click Save search above the results, or New saved search under Settings → Saved searches. A saved search has a name, the query and an optional description.


From the list you can run a saved search, edit or delete it, and filter by name or query. Each saved search can also be:
- Shared with everyone. Other users see it under Shared with everyone; only its owner can change it. Superusers see all users’ saved searches under All users.
- Tracked. Grove runs it on a schedule and keeps the result count of each run, so you can see when a migration is done or a pattern creeps back in. View stored results shows the latest results without searching again.
- Emailed on change. For a tracked search, Grove emails you when the results change. This needs email to be configured on the server (
SMTP_*in Configuration). - Exported to Prometheus. Give a tracked search a metric label and its result count is published on
/metrics, so dashboards and alerts can follow it, for example the number of remaining uses of a deprecated API.
A tracked run that takes longer than the saved-search time limit (30 seconds by default) is logged as an error and its results are discarded.
Contexts
A context is a named search scope. Create one under Settings → Contexts, then use it in any query as context:name, or exclude it with -context:name.
There are two kinds:
- Repositories: a list of repositories, for example all frontend projects.
context:frontend useLegacyRoutersearches only those. - Terms: a reusable piece of query, for example
-file:_test\.go$ -file:\.spec\.ts$to leave out tests.context:noTests retryBudgetexpands to the stored filters.
Context names start with a lowercase letter and contain only letters. Superusers can create global contexts that every user can use; everyone else’s contexts are personal.