On a shared browser-provider account, whose session recordings can your key fetch?
answer
- the door check is not the room check
- authenticated, then located by identifier
- no comparison of caller to creator
- identifiers are printed, not secret
- test with a credential that started nothing
basics
~20 sPotentially every run on the account. An artefact route commonly checks only that the caller authenticates, then resolves the recording from its session identifier, so a credential that never started the run can still fetch it. Measure that boundary yourself.
solid answer
~50 sAuthenticating and being entitled to a particular artefact are different checks, and a remote fleet does not necessarily perform the second. Ggr, unmaintained by its own README, is the readable case: its `/video/`, `/logs/` and `/download/` routes sit behind the same authenticator as session creation, and the handler behind them resolves the artefact from a prefix of the requested session identifier alone. Nothing there compares the calling account against whichever account created that session, and its live-view socket route is not behind that authenticator at all — Ggr (unmaintained) documents plainly that having the running session identifier is what gets you the screen. You cannot assert a closed provider's internal model, so **establish it**: from a credential that has started nothing, try to fetch a colleague's recording, and treat every session identifier your suite prints as reachable.
go deeper
Know that a recording lives with the provider rather than with your job, and that fetching one is a separate request the account credential authorises. Do not assume it is private to whoever ran the test.
Be ready to explain the difference between proving which account is calling and deciding who may have this artefact, and to say that a fleet may only perform the first.
Expect a scoping question after an incident. Argue that exposure covers every run whose identifier is discoverable, not just the compromised pipeline's, and say how you would have tested the boundary beforehand.
Own the upstream decision: if artefact retrieval is bounded by the account, then what a suite is allowed to put on screen has to be settled before the recording exists, not after.
## Authenticating and being entitled are different checks Presenting a valid credential establishes *which account is calling*. Deciding that this caller may have *this particular recording* is a separate decision, taken later, against different information — and a remote fleet does not necessarily take it at all. When they are collapsed, the boundary around an artefact stops being the run that produced it and becomes the whole account. That matters concretely for a law firm's document-review workspace. A suite that opens matters, scrolls privileged text and fills forms produces recordings that are pictures of client material. Whether a colleague's credential — or a leaked one — can fetch those recordings is not a detail of the provider's user interface; it is the actual width of the exposure. ## The readable case Ggr, unmaintained by its own README, is the open implementation of exactly this shape, and it is worth reading because nothing about a closed provider can be checked the same way. - Its `/video/`, `/logs/` and `/download/` routes are wrapped in the same authenticator that wraps session creation, so one credential covers artefacts and sessions alike. - The handler behind those routes takes a fixed-width prefix of the requested session identifier, looks that prefix up in its routing table to find the host, and reverse-proxies the request there. - Nothing in that handler compares the calling account against whichever account created the session. There is no per-session ownership record in Ggr (unmaintained) at all; the account name drives an access decision only at session creation, at the entitlement route, and in the guest check that decides whether an unauthenticated caller is admitted — never against the session whose artefact is being fetched. - Its live-view socket route is not behind that authenticator at all, and Ggr's own quota documentation (Ggr is unmaintained) says plainly that having the running session identifier is what gets you the screen. So in that implementation the honest statement is: **the credential is checked at the door, and the artefact is then located by identifier.** An account that started nothing can retrieve what another account produced, given the identifier. ## Why the identifier is not the control A natural response is "then keep session identifiers secret". That is a weak control, because the identifier is engineered to travel: - The harness prints it so a failing test can link to its evidence. - Result reports and dashboards carry it, often into surfaces with wider readership than the pipeline. - Job logs keep it for as long as the logs are kept. - Any annotation or ticket that references the run carries it too. An identifier that is designed to be quotable is not a secret, and a boundary that depends on its obscurity is not a boundary. Treat every session identifier your suite emits as reachable by anyone who can read your CI output. ## What you may assert, and what you must establish Nothing here licenses a claim about a specific closed provider's internal access model. What a vendor separates, what its roles are named and what its web surface shows are not observable from outside, and asserting them is how confident-sounding answers go wrong. What you can do is measure behaviour: 1. Issue or obtain a credential on the account that has started nothing. 2. Take a session identifier from a run started by a different credential on the same account. 3. From a clean machine, attempt to retrieve that run's recording, its log and any file it downloaded. 4. Record each outcome. Repeat for the live view while a session is still open, because a live surface and a stored surface are not always guarded the same way. 5. Put the result in writing, and re-check it after any change to the account. | what you observed | what it means for the suite | |---|---| | the fetch succeeded | the artefact boundary is the account; a credential on it can reach evidence from runs it did not start | | the fetch was refused | a narrower boundary exists today; record how you tested it, because you have shown behaviour and not a guarantee | The second row is the one candidates get wrong. A refusal you observed once is evidence, not a contract, and it is worth re-testing rather than being promoted to an assumption. ## Practical consequences - Decide what the suite is allowed to put on screen *before* the recording exists, because retrieval control is weaker than you would like. - Prefer distinct credentials per team where the provider allows it, so that a retrievable artefact set is at least smaller. - Do not rely on identifier secrecy; rely on what is captured in the first place. - When an exposure is being assessed, count every run whose identifier is discoverable, not only the runs the compromised pipeline started. The short version for an interview: authentication tells the fleet who is calling, and unless something downstream narrows it, the answer to "whose recordings can this key fetch" is "every run the account produced". Go and find out which of those worlds you are in.
- Why is keeping session identifiers secret a weak control here?Because they are built to travel. The harness prints the identifier so a failing test can link to its evidence, reports and dashboards carry it to a wider readership, job logs retain it, and tickets quote it. An identifier designed to be quotable is not a secret, and a boundary resting on its obscurity is not a boundary. Control what gets captured instead.
- How would you establish where the artefact boundary actually sits?Test it. Obtain a credential on the account that has started nothing, take a session identifier from a run another credential started, and from a clean machine attempt the recording, the log and any downloaded file. Repeat for the live view while a session is still open, since live and stored surfaces are not always guarded alike. Record each outcome in writing.
- If a fetch is refused today, what have you established?That the behaviour you observed was a refusal, which is evidence rather than a guarantee. A closed provider publishes no schema you can hold it to, and packaging changes. Treat the result as a dated observation, note how you tested it, and re-check after any account change instead of promoting the single refusal into a standing assumption.
A building pass that opens the lobby and every door behind it. The guard checks that the pass is valid, not which office you were hired into.
saying these in an interview costs you the question
- Assumes each run's evidence is private to its creator
- Relies on session identifiers being hard to guess
- States what the provider separates internally as fact
- Confuses passing authentication with being entitled to an artefact
- Counts only the compromised pipeline's runs when scoping exposure