[aside] remote MCP client(claude.ai の web カスタムコネクタ等、SPA を経由せず `/oauth/authorize` へ直接ブラウザ遷移する client)の OAuth 認可が、`quacker_session` cookie 未設定だと 401 で行き止まりになる。 「web 版 Claude から quacker に繋げられるか」を調べていて気づいた scope 外観察。`src/oauth/as_server.rs` の `authorize_handler`(L205 付近)は cookie が無いと `401 UNAUTHORIZED` を返すだけで ATProto ログインへリダイレクトしない。SPA は `web/src/auth.ts` の LoginGate が「ATProto ログイン → `/oauth/authorize` 再試行」を client-side で繋いでいるが、claude.ai 等の外部 client はその SPA を経由しないため、同意フローが authorize の 401 で死ぬ(回避策 = 同じブラウザで先に quacker.club SPA にログインして cookie を乗せておく、という暗黙の前提運用になっている)。 discovery / PKCE / dynamic registration 自体は標準準拠で prod でも稼働確認済み(PRM・AS metadata・`/oauth/register`・`/oauth/token` すべて live、`as_server.rs` docstring も Claude Code / Routines を想定 client に挙げている)。引っかかるのは authorize の未ログイン UX だけ。 今回は調査タスクで実装スコープ外のため未着手で残す。直すなら `/oauth/authorize` で cookie 無しのとき、authorize の query params(client_id / redirect_uri / state / code_challenge 等)を保持したまま ATProto login → callback 後に authorize を再開する server-side リダイレクトを足せば、SPA を介さない remote client でも一発で通る(LoginGate の chaining を server 側に寄せる形)。着手トリガー = 外部 client(web Claude connector / Routines 等)を quacker に常用したくなったとき。