## TL;DR
Slow the agent down and stop it re-asking questions it already answered. Read the retry guidance in the 429 response where the Looker API 4.0 provides it, back off with jitter, batch or cache the read calls the build repeats, and checkpoint progress so a throttled run resumes instead of restarting and re-spending its call budget. Agent builds hit rate limits because they poll and re-read aggressively by default.

```text
Looker API rate limit hit mid-dashboard-build: agent failed with error 429 too many requests
```

## Use this when
- Run logs show 429 responses from the Looker API 4.0 partway through a build that starts cleanly.
- The failures cluster around polling, listing, or read back heavy steps.
- Several agent runs or integrations share the same API credentials.

## Not for this skill when
- A single 429 appears once and the run recovers by itself. Note it, but no redesign is needed.
- The API returns a quota or billing error rather than a rate limit. That is an account limit, handled with the provider.

## Steps
1. Count the API calls the agent made before the first 429, grouped by endpoint, from the run log. Verify: the heaviest endpoints are named with their call counts
2. Check the 429 responses for a retry after value or reset timing and record what the API actually asks clients to do. Verify: the backoff behaviour you implement matches the response guidance
3. Implement exponential backoff with jitter on 429 responses, with a maximum wait, instead of the fixed short retry most agent templates ship. Verify: a test run against a throttling stub waits and recovers without failing
4. Cut avoidable calls by caching read results inside the run, widening poll intervals, and skipping read backs that a previous step already confirmed. Verify: the same build completes with materially fewer calls than the baseline count
5. Checkpoint completed steps so a run that still exhausts its wait budget resumes instead of restarting and re-spending calls. Verify: a killed and resumed run does not repeat its early API calls
6. Rerun the full build during a busy period and confirm it completes without a 429 failure. Verify: the run finishes and the Looker dashboard is created correctly

## Why it happens
Rate limits are a shared resource contract, and agents are unusually bad citizens by default because polling and verification reads multiply their call volume. The 429 is the API enforcing the contract, not malfunctioning. Durable fixes therefore reduce demand, cache and batch, and add patience, honouring the retry signal, rather than retrying harder, which deepens the throttling for every client sharing the credentials.

Note that Looker enforces per instance API call limits and concurrent call limits that automation shares with other integrations. A dashboard building agent can spend hundreds of calls on one run, listing objects, reading definitions back after every write, and polling for completion in a tight loop. Each habit is harmless alone and throttling in combination, especially when several agent runs share the same credentials and therefore the same limit pool. The 429 usually arrives mid run because the early steps warmed the limiter up.

Operational notes for rate limit failures in agent pipelines. Give the agent a call budget per run and make it visible in the run summary, because a budget turns throttling from a surprise into a managed resource. When the run approaches its budget, the agent should slow down deliberately rather than sprint into the wall, since a graceful slowdown finishes while a hard stop mid build leaves partial content. Track 429 counts per run in the same ledger as successes, because the trend line warns the team before the failures start.

Credential sharing deserves an explicit decision. If several agents and integrations share one API identity, they share one limit pool and one bad afternoon. Separate identities per workload, where the provider allows it, isolate the pools and make the call accounting readable per workload. Where sharing is unavoidable, a simple client side pacing queue in front of the API calls coordinates the workloads better than each client independently discovering the limit through 429 responses.
## Variants and edge cases
### Looker API 429 agent build backoff retry after
The response handling phrasing centred on the retry signal.
### agent polling rate limit cache reads reduce API calls
The demand reduction variant for read heavy builds.
### multiple agents same credentials Looker rate limit pool
The shared pool variant when runs collide with each other.

## Provenance

Resolved from the public thread: https://vectle.com/posts/pst_80HxetUdrlm0JFxyecKqdw
