Commit 06f7626
fix(runner): wire CP-fetched OIDC token into get_bot_token() for backend API calls (#1217)
## Summary
- After fetching from the CP token endpoint, `_fetch_token_from_cp()`
now calls `set_bot_token(token)` to store the OIDC token in a
module-level cache in `utils.py`
- `get_bot_token()` checks that cache first, so `auth.py` credential
fetches to the backend API use the OIDC token instead of an empty string
- Adds a regression test that verifies `get_bot_token()` is empty before
a CP fetch and returns the token after — confirmed to fail without the
fix
## Root cause
The CP-fetched OIDC token was stored only in `AmbientGRPCClient._token`
(gRPC channel auth). `auth.py`'s `get_bot_token()` had no access to it,
so credential token fetches went out unauthenticated → HTTP 401 on every
session run.
🤖 Generated with [Claude Code](https://claude.ai/code)
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
## Release Notes
* **New Features**
* Added caching for bot tokens fetched from the control plane for
improved performance.
* Updated token sourcing priority to prefer control-plane tokens over
other sources.
* **Tests**
* Added integration tests for token fetching and caching mechanisms.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Co-authored-by: Ambient Code Bot <bot@ambient-code.local>
Co-authored-by: Claude <noreply@anthropic.com>1 parent b0ed2b8 commit 06f7626
3 files changed
Lines changed: 65 additions & 5 deletions
File tree
- components/runners/ambient-runner
- ambient_runner
- platform
- tests
Lines changed: 3 additions & 1 deletion
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
11 | 11 | | |
12 | 12 | | |
13 | 13 | | |
| 14 | + | |
14 | 15 | | |
15 | 16 | | |
16 | 17 | | |
17 | | - | |
| 18 | + | |
18 | 19 | | |
19 | 20 | | |
20 | 21 | | |
| |||
95 | 96 | | |
96 | 97 | | |
97 | 98 | | |
| 99 | + | |
98 | 100 | | |
99 | 101 | | |
100 | 102 | | |
| |||
Lines changed: 17 additions & 4 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
23 | 23 | | |
24 | 24 | | |
25 | 25 | | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
26 | 36 | | |
27 | 37 | | |
28 | | - | |
| 38 | + | |
29 | 39 | | |
30 | | - | |
31 | | - | |
32 | | - | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
33 | 44 | | |
| 45 | + | |
| 46 | + | |
34 | 47 | | |
35 | 48 | | |
36 | 49 | | |
| |||
Lines changed: 45 additions & 0 deletions
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
200 | 200 | | |
201 | 201 | | |
202 | 202 | | |
| 203 | + | |
| 204 | + | |
| 205 | + | |
| 206 | + | |
| 207 | + | |
| 208 | + | |
| 209 | + | |
| 210 | + | |
| 211 | + | |
| 212 | + | |
| 213 | + | |
| 214 | + | |
| 215 | + | |
| 216 | + | |
| 217 | + | |
| 218 | + | |
| 219 | + | |
| 220 | + | |
| 221 | + | |
| 222 | + | |
| 223 | + | |
| 224 | + | |
| 225 | + | |
| 226 | + | |
| 227 | + | |
| 228 | + | |
| 229 | + | |
| 230 | + | |
| 231 | + | |
| 232 | + | |
| 233 | + | |
| 234 | + | |
| 235 | + | |
| 236 | + | |
| 237 | + | |
| 238 | + | |
| 239 | + | |
| 240 | + | |
| 241 | + | |
| 242 | + | |
| 243 | + | |
| 244 | + | |
| 245 | + | |
| 246 | + | |
| 247 | + | |
203 | 248 | | |
204 | 249 | | |
205 | 250 | | |
| |||
0 commit comments