auth login fails with HTTP 403 (non-JSON) when minutes:minutes.transcript:export is combined with task:* scopes
Nobody has claimed this yet.
- Dominant language
- Go
- Stars
- 17.3k
- Forks
- 1.4k
- Avg merge
- 2d 4h
- Merged PRs (30d)
- 105
Description
Summary
On lark-cli auth login (Device Flow), requesting a scope set that includes both minutes:minutes.transcript:export and the task:* scopes makes the device-authorize request fail with HTTP 403 and a non-JSON body (surfaced as "response not JSON"). Login aborts. Dropping that one scope lets login succeed.
Environment
- lark-cli v1.0.67, brand lark (open.larksuite.com), custom app, user login, macOS
Bisection (reproduction)
- Full 42-scope set incl. the combo → 403, non-JSON.
- Each scope requested on its own → succeeds.
- Dropping only
minutes:minutes.transcript:export(keepingtask:*) → login succeeds, 41/42 granted;minutes:minutesandminutes:minutes.media:exportstill granted. - Reordering the scopes in the request changes whether it 403s.
The "passes solo, fails only in combination, order-sensitive, 403 + non-JSON body" signature points to a gateway/WAF false-positive on the request rather than an app-config or per-scope permission error (genuine scope errors return JSON 99991xxx).
Impact
Can't mint a user token that includes transcript-export-as-user without dropping minutes:minutes.transcript:export from the login scope set.
Questions
- Known gateway/WAF interaction with this scope combination?
- Would chunking the authorize into smaller scope batches (or different ordering/encoding) be a workaround the CLI could adopt?
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start at the lark-cli auth login Device Flow entry point and reproduce the device-authorize request with the documented scope combinations and orderings. Trace how HTTP 403 responses with non-JSON bodies are handled; done means the scope combination has a confirmed CLI workaround or an established external-gateway limitation and the result is documented.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go
- Domain
- api, authentication, cli
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100