From a1f3fe08b72b39424f5cf400409c15ee0a4e53d6 Mon Sep 17 00:00:00 2001 From: Claude Date: Tue, 4 Aug 2026 14:18:16 +0000 Subject: [PATCH] Clarify OpenReview anonymous-access error (anti-bot challenge) Anonymous OpenReview note queries are now gated behind an anti-bot challenge (HTTP 403 ChallengeRequiredError) for all venues, not just recent ones. Reword the runtime error, .env.example, and README so they say credentials are required (OPENREVIEW_TOKEN or OPENREVIEW_USERNAME + OPENREVIEW_PASSWORD) and drop the inaccurate "some networks / older venues work anonymously" framing. --- .env.example | 6 +++--- README.md | 9 ++++----- conflens/sources.py | 8 +++++--- 3 files changed, 12 insertions(+), 11 deletions(-) diff --git a/.env.example b/.env.example index cd0597f..2f845f5 100644 --- a/.env.example +++ b/.env.example @@ -32,9 +32,9 @@ OPENAI_API_KEY= # COHERE_API_KEY= # ── OpenReview source (ICLR / NeurIPS) ────────────────────────────────────── -# Optional. Public paper listings are anonymous, but recent (API v2) venues — -# e.g. ICLR 2024+ / NeurIPS 2023+ — challenge anonymous requests from some -# networks. Provide credentials to authenticate (this also enables private +# Usually required. OpenReview now gates anonymous note queries behind an +# anti-bot challenge (HTTP 403), so ICLR / NeurIPS venues need a logged-in +# session. Provide credentials to authenticate (this also enables private # access). Use EITHER a pre-obtained token OR username + password. # OPENREVIEW_TOKEN= # OPENREVIEW_USERNAME= diff --git a/README.md b/README.md index 4458da0..e4d33d9 100644 --- a/README.md +++ b/README.md @@ -174,11 +174,10 @@ data-model and caching diagrams, plus extension points. > (e.g. **PowerTech**, **PES General Meeting**) can't be added without an IEEE > Xplore API key. - > **OpenReview auth** — recent (API v2) venues challenge anonymous requests - > from some networks. If a run returns an auth error, set `OPENREVIEW_TOKEN`, - > or `OPENREVIEW_USERNAME` + `OPENREVIEW_PASSWORD` (see `.env.example`); the - > adapter logs in and authenticates automatically. Older venues work - > anonymously. + > **OpenReview auth** — OpenReview gates anonymous note queries behind an + > anti-bot challenge (HTTP 403), so ICLR / NeurIPS venues need credentials: + > set `OPENREVIEW_TOKEN`, or `OPENREVIEW_USERNAME` + `OPENREVIEW_PASSWORD` + > (see `.env.example`); the adapter logs in and authenticates automatically. - **Theme** — any phrase; defaults to *Agentic AI*. - **Theme definition** — optional free text clarifying what the theme includes or excludes (e.g. *"tool-using LLM agents; exclude pure RL"*). It is threaded diff --git a/conflens/sources.py b/conflens/sources.py index 92a2706..2aa3201 100644 --- a/conflens/sources.py +++ b/conflens/sources.py @@ -364,9 +364,11 @@ def list_papers(self, target: str, force_refresh: bool = False) -> list[Paper]: break if not notes and last_err is not None: raise RuntimeError( - f"OpenReview request failed ({last_err}). Recent ICLR/NeurIPS venues " - "require authentication — set OPENREVIEW_USERNAME and OPENREVIEW_PASSWORD " - "(or OPENREVIEW_TOKEN) in the environment and retry." + f"OpenReview request failed ({last_err}). OpenReview now gates " + "anonymous note queries behind an anti-bot challenge (HTTP 403 " + "ChallengeRequiredError), so ICLR/NeurIPS venues need a logged-in " + "session — set OPENREVIEW_TOKEN, or OPENREVIEW_USERNAME and " + "OPENREVIEW_PASSWORD, in the environment and retry." ) papers = self.parse_notes(notes) try: