zeta運営はトーク内容を覗けるどころではなかったかもしれない
はじめに:公式の声明
AIチャットアプリ「zeta」の日本公式アカウントが、X(旧Twitter)で以下のような声明を出しました。
「現在、一部の他社広告において、zeta 内の会話内容が運営関係者によって閲覧されているかのような内容が確認されておりますが、そのような事実は一切ございません。」
(引用元:zeta日本公式のポスト)
運営側は、ユーザーの会話内容の閲覧を明確に否定しています。しかし、本当にこれらの発言は事実なのでしょうか?
調べてみたところ、この声明とは矛盾するような「運営・開発向けの隠されたエンドポイント」が存在し、任意のユーザーに対して「なりすましログイン」ができるようになっていることが判明しました。
証拠:隠された「なりすまし」エンドポイント
GitHub上で公開されているzetaのフロントエンドのソースコードを確認すると、気になる実装が見つかりました。
export const impersonateApi: MutationApi<ImpersonateResponse, ImpersonateRequest> = {
method: 'POST',
url: '/debug/impersonate',
responseClass: ImpersonateResponse,
};参考:impersonate-controller.ts (GitHub)
該当するエンドポイントのリクエストとレスポンスの型定義(実装内容)は以下のようになっています。
export class ImpersonateRequest {
userId!: string;
deviceId?: string;
}
export class ImpersonateResponse {
accessToken!: string;
refreshToken!: string;
userId!: string;
name!: string;
language!: Language;
isAnonymous!: boolean;
}
このコードは何を意味しているのか?
専門的ではない方に向けてわかりやすく説明すると、「特定のユーザーのID(userId)を送信するだけで、そのユーザーとしてログインするための鍵(アクセストークン等)を受け取ることができる」という仕組みです。
さらに、以下のコードからは、アプリ内の「デバッグメニュー(debug menu)」からこの機能を呼び出し、一時的に任意のユーザーになりすましてログインできるようになっていることが読み取れます。
「ユーザー切替(dev専用)」という項目があり、userIdを入力すると、通常のログインと同じ処理でトークンが発行され、そのままそのユーザーとしてアプリが再起動する。コード中のコメントには、通常ログインと同じ発行処理を使っているためユーザーの言語設定なども問題なく引き継がれる、という趣旨の説明まで書かれている。作り込みからして、思いつきの実装ではなく、意図して用意された機能であることがうかがえる。
公式アカウント「中の人」の発言との矛盾
この会話閲覧疑惑について、zetaの「中の人」アカウントは以下のように発言しています。
「全くの事実無根だし。 逆に見られてたらシンプルに我が困るから。」
(引用元:zeta中の人のポスト)
関係者は疑惑を「事実無根」と強く否定しています。
しかし、ここまで見てきたように、システム上「任意のユーザーになりすましてログインする機能」が実装されているのは紛れもない現状です。
まとめ
整理すると、事実として確認できるのは次の2点だ。
- 公式は「運営が会話を見ている事実はない」と明言している
- 公開されているソースコードには、userIdだけで任意ユーザーとしてログインできるAPIと、それを呼び出すデバッグ用のUIが実装として存在する
一方で、このデバッグ機能が本番環境の一般ユーザーに対して実際に使える状態なのか、日常的に使われているのかは、コードを読むだけでは分からない。「会話を覗き見るための機能」と決めつけるのは早計かもしれないが、「そもそもそういう仕組みが存在すること自体、公式の説明とは相容れないのでは」という疑問は残る。
少なくとも、「一切ございません」と言い切るなら、なぜこの機能が実装として存在するのか、開発・検証以外の用途で使われることはないのか、という点については、公式からもう少し具体的な説明があってもいいのではないかと思う。
追記
元のgithubに公開してたリポジトリがtakedownくらいました
https://github.com/github/dmca/blob/master/2026/08/2026-08-12-scatter-labs.md
codebergに移動したので再び中身を見ることは可能です