PlatformsSlackBoot

clientInit

Domainboot
Kindquery
doc_id—
Path/api/client.init
Sends`------WebKitFormBoundaryh4FkPYN2LP2EWElr
Content-Disposition: form-data; name, ------WebKitFormBoundaryCpRFiSshkwUpt7BK
Content-Disposition: form-data; name`
Readsok, self.id, self.name, self.is_bot, self.updated, self.is_app_user, self.team_id, self.deleted, self.color, self.is_email_confirmed, self.real_name, self.tz and 28 more
Called fromruns/inspect/20261103T065639_mattSlack/script31.js:2988 anonymous
reaev_e942310078276f18690d9db6f8b6b3cb309fe84f36b3b458e894fc57e75c23aa

Seen 2 time(s) in 1 run(s).

ActionOur stepTimesStatusTookAfter step startErrors
inspectstep 4: goto /client1200554 ms3154 ms—
inspectstep 6: goto /client/T0C4VCD06MR/D0C8VAE7REU1200289 ms2221 ms—

What it sent and what came back (the newest 2 from our runs)

Read from each run's own recording (rule 73), secrets and signed link tokens taken out. Kept in ~/.logCli/rea/clientFacts.json, so it stays after the run is pruned.

runs/inspect/20261103T065639_mattSlack, step 4: goto /client: 200, 554 ms

Sent:

{
  "query": {
    "_x_id": "noversion-1793689060.890",
    "_x_gantry": "true",
    "_x_desktop_ia": "4",
    "_x_version_ts": "1793684253",
    "_x_foreground": "true",
    "_x_frontend_build_type": "current",
    "fp": "6f",
    "_x_num_retries": "0"
  },
  "body": {
    "------WebKitFormBoundaryh4FkPYN2LP2EWElr\r\nContent-Disposition: form-data; name": "\"token\"\r\n\r\nxoxc-12165421006739-12156263517591-12492529441700-5bffe6e6a317b9bbab53d938a4526d20e882de6ab372cd46f9f90868bb0322a0\r\n------WebKitFormBoundaryh4FkPYN2LP2EWElr\r\nContent-Disposition: form-data; name=\"include_relevant_onboarding\"\r\n\r\ntrue\r\n------WebKitFormBoundaryh4FkPYN2LP2EWElr\r\nContent-Disposition: form-data; name=\"_x_reason\"\r\n\r\nfetch-client-init-data\r\n------WebKitFormBoundaryh4FkPYN2LP2EW… (610 chars)"
  }
}

Answered:

{
  "ok": true,
  "self": "(23 fields)",
  "team": "(9 fields)",
  "workspaces": "(1 items)",
  "account_types": "(3 fields)",
  "slack_route": "T0C4VCD06MR",
  "image_proxy_url": "https://slack-imgs.com/",
  "reload_info": "(0 fields)",
  "cache_version": "v21-nomad",
  "user_date_created": 1790614676,
  "prefs_version": "f885351f584713756cb2973273f3d7122dd6f2b6e4b52d6d0e6929219f5a41d9",
  "mobile_app_requires_upgrade": false,
  "prefs": "(608 fields)"
}

runs/inspect/20261103T065639_mattSlack, step 6: goto /client/T0C4VCD06MR/D0C8VAE7REU: 200, 289 ms

Sent:

{
  "query": {
    "_x_id": "noversion-1793689117.040",
    "_x_gantry": "true",
    "_x_desktop_ia": "4",
    "_x_version_ts": "1793684253",
    "_x_foreground": "true",
    "_x_frontend_build_type": "current",
    "fp": "6f",
    "_x_num_retries": "0"
  },
  "body": {
    "------WebKitFormBoundaryCpRFiSshkwUpt7BK\r\nContent-Disposition: form-data; name": "\"token\"\r\n\r\nxoxc-12165421006739-12156263517591-12492529441700-5bffe6e6a317b9bbab53d938a4526d20e882de6ab372cd46f9f90868bb0322a0\r\n------WebKitFormBoundaryCpRFiSshkwUpt7BK\r\nContent-Disposition: form-data; name=\"include_relevant_onboarding\"\r\n\r\ntrue\r\n------WebKitFormBoundaryCpRFiSshkwUpt7BK\r\nContent-Disposition: form-data; name=\"_x_reason\"\r\n\r\nfetch-client-init-data\r\n------WebKitFormBoundaryCpRFiSshkwUpt… (610 chars)"
  }
}

Answered:

{
  "ok": true,
  "self": "(23 fields)",
  "team": "(9 fields)",
  "workspaces": "(1 items)",
  "account_types": "(3 fields)",
  "slack_route": "T0C4VCD06MR",
  "image_proxy_url": "https://slack-imgs.com/",
  "reload_info": "(0 fields)",
  "cache_version": "v21-nomad",
  "user_date_created": 1790614676,
  "prefs_version": "f885351f584713756cb2973273f3d7122dd6f2b6e4b52d6d0e6929219f5a41d9",
  "mobile_app_requires_upgrade": false,
  "prefs": "(608 fields)"
}

What it does

Is the client's main boot call: it returns the signed-in user (self.id, self.name, self.team_id, self.tz, self.real_name, and 28 more fields). It fired 3.2 s into step 4 (goto /client, 554 ms) and 2.2 s into step 6 (goto /client/T0C4VCD06MR/D0C8VAE7REU, 289 ms), both 200.

What our machine does with it

Nothing: no log-cli code calls it. The engine (python/slackApi/engine.py) works through GabrielCore on curl_cffi, which signs in with the d cookie and calls only the web API methods it needs, so this is Slack's own web client boot traffic that log inspect recorded. The engine learns who the account is from the cookie exchange (core.auth.exchange_cookie in teams_of, and core.initialize()), which gives the team id, domain and user id.

What can go wrong

Like every Slack web API answer it carries ok; with ok: false the error field says why (for example not_authed, invalid_auth, ratelimited). Both recorded answers were 200 with no error.