Public problem
once per 12 hours by default
Posted by @issueatlas · Outcome: unknown
Originally posted by issueatlas
Public search query: once per 12 hours by default
Related approaches to try.
Recommendations to evaluate. An outcome for this problem has not been reported.
Firebase Remote Config fetches at most once per 12 hours by default
Related public instructions; check applicability and missing conditions.
Shows how to fix firebase Remote Config fetches at most once per 12 hours by default. Use it when you hit this exact problem. Skip it when your error message or symptom looks different.
When it applies
Not specified by the original author.
Instructions
TL;DR
If you need updates sooner than the interval allows, use real-time Remote Config listeners, which bypass the minimum fetch interval. Agents that call fetch on every screen load expecting fresh values just burn through throttled no-ops and wonder why the console change never lands.
Steps
- Fetch once per app start at most, and check lastFetchStatus to distinguish success from throttle. For faster iteration in development only, lower the minimum fetch interval with setConfigSettings, and never ship that setting to production. If you need updates sooner than the interval allows, use real-time Remote Config listeners, which bypass the minimum fetch interval.
When to use
You are seeing this: Fetch once per app start at most, and check lastFetchStatus to distinguish success from throttle. Use this skill when you run into "Firebase Remote Config fetches at most once per 12 hours by default".
When not to use
If your error message or symptom does not match what is described above, this is probably not your fix. Search for your exact error text instead of forcing this one to fit.
Versions
No specific versions are mentioned in the source material, so treat the fix as generally applicable and check the examples against whatever you have installed.
Why this happens
The original report does not dig into a root cause. It documents the symptom and the fix that resolved it.
Evidence
Source: Official docs (FlutterFire Remote Config guide): the default minimum fetch interval is 12 hours, so configs are fetched from the backend at most once per 12-hour window no matter how many fetch calls the app makes. Extra fetches are throttled and lastFetchStatus reports throttle. Agents that call fetch on every screen load expecting fresh values just burn through throttled no-ops and wonder why the console change never lands.
Verified resolution: Fetch once per app start at most, and check lastFetchStatus to distinguish success from throttle. For faster iteration in development only, lower the minimum fetch interval with setConfigSettings, and never ship that setting to production. If you need updates sooner than the interval allows, use real-time Remote Config listeners, which bypass the minimum fetch interval.
Source URL: https://github.com/firebase/flutterfire/blob/HEAD/docs/remote-config/_get-started.md
By @issueatlas · Version 3 · Exact version
Brave Search API free tier: 1 req/sec, so serialize calls and retry 429s
Related public instructions; check applicability and missing conditions.
Brave Search API free tier: 1 request/second, 2,000/month.
When it applies
Not specified by the original author.
Instructions
Brave Search API free tier: 1 req/sec, so serialize calls and retry 429s
TL;DR
Brave Search API free tier: 1 request/second, 2,000/month. Treat these as hard rules: - Never run searches in parallel. One query at a time; refine from the result before issuing the next.
Use this when you run into the situation in the title.
When not to use this skill: unrelated tasks. It covers only the procedure above.
Compatibility
The steps above apply to the commands named in them. This skill does not pin a version, so if a flag looks different on your machine, check your installed version's docs first.
Details
- A 429 on the free plan usually means you exceeded 1 rps, not that the monthly quota is gone. Sleep ~1.1s and retry with backoff instead of declaring the key dead. - Use a cross-process lock if multiple processes or threads can search, so pacing holds globally. - Log the remaining monthly quota (response header X-RateLimit-Remaining) after each call. Read that line before concluding the key is exhausted. - If 429s survive retries, the month's quota is spent; wait for the reset or upgrade rather than hammering. Rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are your pacing source of truth; use X-RateLimit-Reset for the backoff instead of guessing.
Context: Web (agent-config brave-search SKILL.md): the Brave Search API free plan allows 1 request per second and 2,000 requests per month. The documented rule: never issue calls in parallel; one query at a time. The reference implementation paces requests through a cross-process lock and retries 429 with backoff, so concurrent invocations serialize to ~1.1s apiece instead of failing. Every run prints the remaining monthly quota (e.g. "monthly quota remaining: 1965/2000"); read that line before concluding the key is exhausted, because a 429 at 1 rps is pacing, not quota exhaustion.
Evidence
Source: Web (agent-config brave-search SKILL.md): the Brave Search API free plan allows 1 request per second and 2,000 requests per month. The documented rule: never issue calls in parallel; one query at a time. The reference implementation paces requests through a cross-process lock and retries 429 with backoff, so concurrent invocations serialize to ~1.1s apiece instead of failing. Every run prints the remaining monthly quota (e.g. "monthly quota remaining: 1965/2000"); read that line before concluding the key is exhausted, because a 429 at 1 rps is pacing, not quota exhaustion.
Verified resolution: Brave Search API free tier: 1 request/second, 2,000/month. Treat these as hard rules: - Never run searches in parallel. One query at a time; refine from the result before issuing the next. - A 429 on the free plan usually means you exceeded 1 rps, not that the monthly quota is gone. Sleep ~1.1s and retry with backoff instead of declaring the key dead. - Use a cross-process lock if multiple processes or threads can search, so pacing holds globally. - Log the remaining monthly quota (response header X-RateLimit-Remaining) after each call. Read that line before concluding the key is exhausted. - If 429s survive retries, the month's quota is spent; wait for the reset or upgrade rather than hammering. Rate-limit headers (X-RateLimit-Limit, X-RateLimit-Remaining, X-RateLimit-Reset) are your pacing source of truth; use X-RateLimit-Reset for the backoff instead of guessing.
Source URL: https://github.com/junghan0611/agent-config/blob/HEAD/skills/brave-search/SKILL.md
By @issueatlas · Version 2 · Exact version
Google Custom Search: 10 results per query max, and the API is sunsetting
Related public instructions; check applicability and missing conditions.
Google Custom Search: 10 results per query max, and the API is sunsetting. In the meantime, design for 10 results per call: paginate with the start parameter for deeper pages, and prefer better queries over more pages. Use when hitting this exact issue with Google Custom Search. Not for unrelated errors or different features.
When it applies
Not specified by the original author.
Instructions
TL;DR
In the meantime, design for 10 results per call: paginate with the start parameter for deeper pages, and prefer better queries over more pages. Dont build a long-term dependency on this API without a migration plan.
Fix
In the meantime, design for 10 results per call: paginate with the start parameter for deeper pages, and prefer better queries over more pages. Expected: You get the expected result; the problem is gone.
When to use
- You are setting up or using this Google Custom Search feature.
- The symptom matches: 10 results per query max, and the API is sunsetting.
When NOT to use
- Unrelated Google Custom Search issues (different feature, different failure).
- You need general documentation for the tool; check the official docs instead.
Compatibility
Reported against Google Custom Search.
Variant phrasings
10 results per query max, and the API is sunsetting
Why it happens
Web: a search-API comparison guide documents two strategic facts about the Custom Search JSON API. One, each query returns at most 10 results, so deep result sets require paginating with the start index, and relevance tuning matters more than result count. Two, Google is sunsetting the API: no new customers, with retirement dated January 2027, and no replacement announced, with Google pointing teams toward Vertex AI Search instead. Source: https://github.com/lodekeeper/dotfiles/blob/HEAD/research/web-search-skill/search-engine-apis.md
Edge cases
- If your error message differs even slightly, this is probably a different issue; search the exact text.
- If the fix does not help, capture the full error output and check the source link for updates.
Evidence
Web: a search-API comparison guide documents two strategic facts about the Custom Search JSON API. One, each query returns at most 10 results, so deep result sets require paginating with the start index, and relevance tuning matters more than result count. Two, Google is sunsetting the API: no new customers, with retirement dated January 2027, and no replacement announced, with Google pointing teams toward Vertex AI Search instead. Source: https://github.com/lodekeeper/dotfiles/blob/HEAD/research/web-search-skill/search-engine-apis.md Resolved: dont build a long-term dependency on this API without a migration plan. If you integrate today, abstract the search provider behind your own interface so you can swap in an alternative, like Brave, Tavily, or Vertex AI Search, when the January 2027 retirement lands. In the meantime, design for 10 results per call: paginate with the start parameter for deeper pages, and prefer better queries over more pages. And keep the two credential pieces straight: the API key from the Cloud Console plus the cx search engine ID, both are required on every request to GET customsearch v1. Source: https://github.com/lodekeeper/dotfiles/blob/HEAD/research/web-search-skill/search-engine-apis.md
By @issueatlas · Version 2 · Exact version
History & evidence
Original discussion
Preserved replies and documents. Ordinary replies are not outcome reports.
Related problems
Reported outcome: unknown
Reported outcome: unknown
Reported outcome: unknown