ブログに戻る
Guide

Slack の xoxc トークンと xoxd トークンの正体と仕組み

xoxc は Slack ウェブクライアントのトークン、xoxd はセッション Cookie です。片方だけでは動きません。各接頭辞の意味と認証の仕組みを解説します。

Slack Green Team
September 8, 2026
October 7, 2026
6 分で読める
Share:
slack
tokens
api

Slack を開いた状態でブラウザの開発者ツールを見たことがあるなら、見慣れない2つの文字列に気づいたはずです。ひとつは xoxc- で始まり、もうひとつは xoxd- で始まります。どちらも Slack の API ドキュメントには載っておらず、検索しても説明のない短いスニペットが出てくるだけです。

結論から書きます。xoxc は Slack のウェブクライアントが内部 API を呼ぶときに使うトークンです。xoxd はサインイン時に Slack がセットする d Cookie の値です。この2つでひとつのセッションを構成します。片方だけを送っても、Slack は認証エラーを返します。

プレゼンスの話でこのペアが重要なのは、ボットトークンでは本人のプレゼンスを変えられず、このペアなら変えられるからです。片方が欠けたときに Slack が何を返すかは、下のテストに載せています。

xoxcはワークスペースとユーザーを示し、xoxdはセッションが生きている証明

xoxc トークンとは何か

xoxc は Slack のウェブクライアント用トークンです。ブラウザで Slack を開くと、ページの起動時にトークンがローカルストレージへ保存され、ウェブアプリのすべてのリクエストが Authorization: Bearer ヘッダーでそのトークンを送ります。

スコープはワークスペース単位です。4つのワークスペースにサインインしていれば、xoxc の値も4つ、ワークスペースごとに別々に存在します。

ボットトークンでも OAuth トークンでもありません。アプリのインストール手順で発行されるものではなく、権限の承認画面もありません。ブラウザセッションそのものを表すため、そのワークスペースであなたができる操作はすべて実行できます。

xoxd トークンとは何か

xoxd は厳密にはトークンではありません。認証時に .slack.com にセットされる d という名前の Cookie の値です。役割は、そのリクエストが盗まれた文字列ではなく実際にサインイン済みのセッションから来ていることを証明することです。

Bearer トークンではなく Cookie ヘッダーとして送ります。

Cookie: d=xoxd-your-value-here

xoxc と違い、xoxd はそのブラウザでサインインしているすべてのワークスペースに共通です。ワークスペースではなく Slack のログインに紐づくためです。

なぜ xoxc と xoxd は2つ揃わないと動かないのか

リクエストの構造:Bearerヘッダーがxoxcを、Cookieヘッダーがxoxdを運ぶ

Slack が両方を検証しているからです。xoxc はどのワークスペースの誰として操作するかを示します。d Cookie はそのトークンの背後にあるセッションがまだ有効であることを証明します。どちらかが欠けると失敗します。

Slack の内部 API へのリクエストは次のようになります。

curl 'https://slack.com/api/users.setPresence' \
  -H 'Authorization: Bearer xoxc-...' \
  -H 'Cookie: d=xoxd-...' \
  -H 'Content-Type: application/x-www-form-urlencoded' \
  --data 'presence=auto'

2026年10月6日に、サインイン中の Slack ウェブタブから確認しました。タブ自身の xoxc トークンで auth.test を呼び、Cookie を付けたり外したりした結果です。

xoxc as Bearer header + d cookie   -> ok: true, user: sieun
xoxc as Bearer header, no cookie   -> ok: false, error: invalid_auth
xoxc in the form body + d cookie   -> ok: true, user: sieun
xoxc in the form body, no cookie   -> ok: false, error: invalid_auth
d cookie only, no token            -> ok: false, error: not_authed

つまり、Cookie のないトークンは invalid_auth で、トークンのない Cookie は not_authed で拒否されます。後者は、Slack がどのワークスペースの話か判断できないためです。クライアントがリアルタイムイベント用に張る WebSocket 接続も同じで、ハンドシェイクで d Cookie を送ります。

Slack の他のトークン接頭辞は何を意味するのか

6つのSlackトークン接頭辞と出どころ・在席能力

Slack は接頭辞で資格情報の種類を表します。この記事で扱うペアは、開発者向けドキュメントに載っているトークンとは別のカテゴリに属します。

接頭辞種類取得方法プレゼンスを変更できるか
xoxc-ウェブクライアントトークン、ワークスペース単位ブラウザセッションできる
xoxd-セッション Cookie d の値ブラウザセッションxoxc と組にした場合のみ
xoxb-ボットトークンアプリのインストールできない、ボットは自身のプレゼンスを持つ
xoxp-ユーザー OAuth トークンユーザースコープ付きインストール権限があればできる
xapp-アプリレベルトークンアプリ設定の Basic Informationできない
xoxe-ローテーション用リフレッシュトークンOAuth ローテーションできない

実務上の区別は単純です。xoxb と xoxp はアプリのインストールで発行され、承認したスコープを持ちます。xoxc と xoxd はサインインしている状態そのものから生まれ、スコープの一覧を持たず、Slack のウェブアプリ自身が使っています。

Slackで「離席中」と表示されなくなります

クラウドベース。ダウンロード不要。ノートPCがオフでも24時間稼働。

xoxc と xoxd はどこで確認できるのか

自分のアカウントを、自分のブラウザで確認する手順です。

  • ブラウザで Slack を開き、対象のワークスペースにサインインします。
  • 開発者ツールを開き、Application パネルを表示します。
  • Local Storage の localConfig_v2 を開きます。対象ワークスペースの token フィールドが xoxc- で始まる値です。
  • Cookies の slack.com を開き、d という名前の Cookie の値をコピーします。これが xoxd- の値です。

注意点を2つ、はっきり書いておきます。この資格情報はスコープの制限なしにあなた本人として動作するため、パスワードと同じ扱いが必要です。信頼できないサイトに貼り付けてはいけません。そして対象はあなた自身のアカウントに限られます。他人の値を取得する行為は連携ではなくアカウントの不正利用です。

何に使われているのか

ウェブクライアントにできて、公開 API のボットにはできないことです。よくあるのはプレゼンスやステータスの自動化、自分のメッセージ履歴のエクスポート、そして n8n や MCP サーバーのようにボットトークンでは形が合わない場面でのスクリプト連携です。

もっとも分かりやすいのがプレゼンスで、私たちがこのペアを重視する理由でもあります。Slack は入力が約10分途切れると離席扱いに切り替わります。詳細は Slack がアクティブでいられる時間 にまとめました。ボットトークンではこれを解決できません。ボットは自分自身のプレゼンスしか持たないからです。xoxc と xoxd のペアなら解決できます。Slack から見れば、あなた自身のクライアントが話しているからです。これが、マウスジグラーを使わずに Slack をアクティブに保つ 仕組みであり、自分でトークンを管理したい人向けの セルフホスト CLI の土台でもあります。

xoxc と xoxd の有効期限はどれくらいか

背後にあるブラウザセッションが生きている限り有効です。Slack はサインイン状態を維持するため、通常の使い方なら数か月は使えます。

無効になるのは、そのワークスペースからサインアウトしたとき、管理者がセッションを終了したとき、ワークスペースのセッション期限が切れたときです。タブを閉じただけでは終了しません。Cookie を削除すると d Cookie が消えるため無効になります。

このペアに更新用のエンドポイントはありません。期限が切れたら、サインインし直して新しい値を読み直します。これらのトークンを使う仕組みは、認証エラーを検知して再取得を促す作りにする必要があります。無限にリトライしても回復しません。

自分のトークンを使うのは Slack の規約違反か

Slack の API 利用規約は自動アクセスを対象としており、トークンはあなたのセッションを表すという意味であなたのものです。実務でより重要なのは勤務先のポリシーです。プレゼンスは管理者が見ている場合があります。この点の現実的な話は バレるのかどうか に書きました。

私たちが引いている線は、自分のアカウント、自分のセッション、他人のデータを収集しないこと、そして管理者から見えるべきセキュリティイベントを隠さないことです。

まとめ

xoxc は誰がどこで操作しているかを示します。xoxd はセッションが生きていることを証明します。Slack のウェブクライアントはすべての呼び出しで両方を送っているため、そのクライアントを模倣する仕組みも同じことをする必要があります。

Always Active

マウスを動かす必要はもうありません。

何百人ものリモートワーカーがSlackのステータスを気にしなくなりました。一度設定すれば、永遠にグリーン。

Related Articles

Guide

How to See All Your DMs in Slack, Including the Hidden Ones

The DMs tab lists your direct messages with people. App DMs, Slackbot and DMs with deleted accounts sit elsewhere. We compared the tab with the full list the Slack API returned.

Slack Green Team
Guide

Slack Images Not Showing? 5 Causes We Reproduced

We uploaded images to a Slack test channel and then switched each image setting off, ran /collapse, and posted from a bot that was not in the channel. Five causes, each reproduced.

Slack Green Team
Guide

How to Message Yourself on Slack (and What It Notifies)

Your own name under Direct messages opens a private DM with yourself. We sent it a note, a file, a scheduled message and a reminder, and checked which ones raised a badge.

Slack Green Team