Add ZoomMate usage provider#2344
Conversation
|
ClawSweeper status: review started. I am starting a fresh review of this pull request: Add ZoomMate usage provider This is item 1/1 in the current shard. Shard 0/1. This placeholder means the worker is alive and reading the current context. I will edit this same comment with the actual review when the claws are done clicking. Crustacean status: shell secured, claws on keyboard, evidence pebbles being sorted. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 33548f065a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| for source in sources where !source.records.isEmpty { | ||
| let cookies = BrowserCookieClient.makeHTTPCookies(source.records, origin: query.origin) | ||
| .filter { Self.isSendable(cookieDomain: $0.domain) } | ||
| guard !cookies.isEmpty else { continue } | ||
| log("\(source.label): found \(cookies.count) matching cookies") | ||
| let header = cookies.map { "\($0.name)=\($0.value)" }.joined(separator: "; ") | ||
| return SessionInfo(cookieHeader: header, sourceLabel: source.label) |
There was a problem hiding this comment.
Continue past invalid Zoom cookie profiles
When Chrome has multiple profiles or cookie stores, this returns the first source that has any sendable zoom.us cookies. Since the query includes the broad parent domain, a profile with ordinary Zoom web cookies but no ZoomMate session can be chosen before a later profile that is actually signed in; the subsequent mint fails and the retry performs the same import again, so auto mode reports invalid/no session even though valid cookies exist. Validate each candidate before returning it, or continue to the next source when token minting rejects the cookies.
Useful? React with 👍 / 👎.
There was a problem hiding this comment.
Good catch. Fixed in eb218d4. Automatic import now enumerates eligible Chrome cookie profiles and validates them in order. A bootstrap 401/403 advances to the next profile; network and parse failures still surface immediately, and only the first successfully validated session is persisted. Added regression coverage for both the rejected-first-profile success path and the non-fallback parse-failure path.
|
Codex review: needs maintainer review before merge. Reviewed July 19, 2026, 1:39 PM ET / 17:39 UTC. Summary Reproducibility: not applicable. as a feature request. The contributor provides a redacted live bundled-CLI result for the central credits fetch, while the rejected-profile follow-up is covered by focused regression tests. Review metrics: 2 noteworthy metrics.
Root-cause cluster Members:
Proposal only: this assessment does not dispatch repair, suppress jobs, mutate sibling items, close, or merge anything. Merge readiness Overall follows the weaker of proof and patch quality, so missing proof can cap an otherwise strong patch. Rank-up moves:
Risk before merge
Maintainer options:
Next step before merge
Maintainer decision needed
Security Review detailsBest possible solution: If the product owner sponsors ZoomMate as a CodexBar provider, merge the opt-in Chrome-only implementation with its fixed-host, memory-only bearer boundary; otherwise pause or close the PR and keep the linked proposal as the scope decision record. Do we have a high-confidence way to reproduce the issue? Not applicable as a feature request. The contributor provides a redacted live bundled-CLI result for the central credits fetch, while the rejected-profile follow-up is covered by focused regression tests. Is this the best way to solve the issue? Unclear pending product approval: the implementation reuses existing cookie-provider and Keychain-cache patterns, but accepting ZoomMate and its browser-session boundary is a repository-level policy choice. AGENTS.md: found and applied where relevant. Codex review notes: model internal, reasoning high; reviewed against f8636cb37eb0. Label changesLabel changes:
Label justifications:
Evidence reviewedSecurity concerns:
What I checked:
Likely related people:
What the crustacean ranks mean
Shiny media proof means a screenshot, video, or linked artifact directly shows the changed behavior. Runtime, network, CSP, and security claims still need visible diagnostics. How this review workflow works
Review history (1 earlier review cycle)
|
eb218d4 to
979fd6c
Compare
|
Thanks for the review. I removed the release-owned On product scope and the browser-session boundary, this PR follows Peter's explicit invitation in #1997, where the ZoomMate product fit and Factory/WorkOS-style cookie-to-short-lived-bearer shape were accepted. The provider remains opt-in and disabled by default. Ready for maintainer review. |
Closes #1997.
I work at Zoom; this is a personal contribution, not an official Zoom-sponsored or supported
integration. ZoomMate is Zoom's customer-facing AI agent product, not an internal Zoom tool. I am
happy to maintain this provider personally as its web-client endpoints evolve.
Summary
credit history/pacing.
bearer exchange follows the accepted Factory/WorkOS provider shape discussed in Provider proposal: ZoomMate credit tracking — worth a PR? #1997.
CookieHeaderCache; keep the minted bearer JWT in process memory only, bounded by its expiry.ai.zoom.usandzoommate.zoom.us, with one-host failover only for non-auth/non-parse failures.support are included.
Maintainer review bar
synthetic tests reject HTTP, lookalike domains, unrelated Zoom subdomains, ports, and wrong paths.
bearer, and
nakvalues never appear.noSession,noCapture, andinvalidCredentialsrecovery messages.timestamps are synthetic; tests use transports/browser records/test cache stores only.
Redacted live proof
Bundled CLI succeeds from the persisted session with CodexBar closed
Run on July 19, 2026 against a live ZoomMate account using the locally packaged app from commit
33548f06. The app was closed before this command, demonstrating the prompt-free app-to-CLI cookiecache handoff. The command projected only non-sensitive shape fields:
The published projection contains no cookie,
Authorization, bearer/nak, email, account or tenantidentifier, request identifier, credit value, or reset timestamp. No raw capture is committed.
Validation
make checkpasses: SwiftFormat 0/1592 files, SwiftLint strict 0 violations/1591 files, plus locale,documentation-link, parser-hash, and site checks.
./Scripts/package_app.sh debugsucceeds; the packaged CLI live proof above succeeds with the appclosed.
make testrun stopped at the unchanged upstream timing assertion inKimiProviderTests.swift:751(elapsed < 250ms). Four isolated reruns of that exact test producedtwo passes and two failures, confirming it is load-sensitive; this PR changes no Kimi files. GitHub
Actions remains the authoritative full-suite and Linux check.
Scope notes
zoom.usaccess is cookie discovery only because the required SSO cookies are parent-scoped;RFC 6265 send-time narrowing drops cookies for unrelated sibling hosts.
exhaustiveness stubs only.
docs/zoommate.md.