Skip to content
Open-Source Registry

pypi / henosis-cli / 0.6.205

henosis-cli 0.6.205

bitbison: flagged, behavior flagged, dependencies clean, posture not checked, pipeline clean, 1 of 1 jobs captured RisknoneVulnsnone
processes
448
operations
66K
packages
0
compiler runs
3
connections
1
build time
35s
job time
35s
capture
830 KB
records
113K
bytes / record
7.3
run 6811c7de-aa57-42b5-b1f7-21e8546d5bc1 · built 2026-10-26 · complete View on PyPI
Reviewed by Bitbison: secrets-exposureOn start, without asking, the client copies the OAuth tokens in ~/.codex/auth.json into ~/.henosis_cli_codex_auth.json and uses them with chatgpt.com and auth.openai.com; the user-typed /codex transcribe command puts the ChatGPT access token and account id in a WebSocket message to henosis.us, which neither the README nor the PyPI description mentions.

Artifact

archive · retained · retained · graph v2
1

Checks

10 of 10 clear
Build behavior✓✓✓✓✓✓✓✓
Supply chain✓
Pipeline✓

Detections0

Network

1 peers
  • files.pythonhosted.org:8080 the package manager · python3.14 (henosis-cli) via Package registries profile (pip → files.pythonhosted.org) ecosystem

Versions214

Raw data

capture
830 KB
records
113,469
bytes per record
7.3

Loading a sample of the capture

Want to see more? E-mail us at hello@bitbison.io about your use case.

1 of 1 jobs captured: build-import success · Generated 2026-10-26 · run 6811c7de-aa57-42b5-b1f7-21e8546d5bc1

analysis 0.1.0 · 2026-10-26 · 7634c94 · graph v2

Bitbison's review

henosis-cli copies the Codex CLI's ChatGPT login on every start and sends its access token to henosis.us for /codex transcribe, undisclosed

Conclusion
secrets-exposure
Covers
0.6.205, 0.6.206, 0.6.207 and 0.6.208
Reviewed by
Bitbison
Updated
2026-11-06

On start, without asking, the client copies the OAuth tokens in ~/.codex/auth.json into ~/.henosis_cli_codex_auth.json and uses them with chatgpt.com and auth.openai.com; the user-typed /codex transcribe command puts the ChatGPT access token and account id in a WebSocket message to henosis.us, which neither the README nor the PyPI description mentions.

Indicators

hosts
henosis.us (73.20.52.255): receives the ChatGPT access token and account id from /codex transcribe; login check at startchatgpt.com: Codex model requests, usage and reset, with the access tokenauth.openai.com: token refresh, with the refresh tokenapi.openai.com: voice transcription, with the access tokenapi.anthropic.com, platform.claude.com: Claude subscription routeauth.x.ai, cli-chat-proxy.grok.com: Grok route
requests
GET https://henosis.us/api_v2/check-auth (Henosis cookies only)POST https://henosis.us/api_v2/realtime/transcription/ws-token, then wss://henosis.us/api_v2/realtime/transcription/ws?token=<ticket> with a start message carrying auth.mode=codex_oauth, auth.access_token=<ChatGPT access token>, auth.account_id=<ChatGPT account id> (/codex transcribe only)POST https://auth.openai.com/oauth/token grant_type=refresh_token, client_id=app_EMoamEEZ73f0CkXaXp7hrannPOST/WSS https://chatgpt.com/backend-api/codex/responses with Authorization: Bearer <access token>, chatgpt-account-id, originator: codex_cli_rsGET https://chatgpt.com/backend-api/wham/usage (and wham/* usage, reset, profile) with the access tokenwss://api.openai.com/v1/realtime and POST https://api.openai.com/v1/audio/transcriptions with the access token
environment
HENOSIS_SERVER (overrides the henosis.us/api_v2 base the transcribe token goes to)
files
~/.codex/auth.json (read on start when the client has no Codex login of its own; rewritten with only auth_mode, tokens and last_refresh on each token refresh; deleted by /codex logout)~/.henosis_cli_codex_auth.json (written 0600 through a temporary ~/..henosis_cli_codex_auth.json.<random>.tmp: access_token, refresh_token, id_token, account_id, email, expiry_date, last_refresh_at)~/.henosis_cli_auth.json (Henosis's own login cookies)~/.claude/.credentials.json (read; used only with api.anthropic.com and platform.claude.com)~/.grok/auth.json (read; used only with auth.x.ai and cli-chat-proxy.grok.com)henosis_cli-0.6.208.tar.gz (sha256 04e765365561947e8f148f3419b64ab0b51a322d6aa1cd57efb52381058a6c77)cli.py of 0.6.208 (sha256 d5c0e7fa85d82ad4a98d97cf42cd67914ca2fdcda86a30e212339808ca4862b2)
processes
python running the henosis-cli console script (henosis_cli_tools.cli_entry:main), started with no arguments

What was examined

0.6.205
sha256:a4b61e6a019ea51cbdc43b749f7faeef5efbf6fa4b0688c741572a30b6c9cbed
0.6.206
sha256:b1fa010b94a77292cce57ec22321cdab7d4350c0e9979c4a5cf01c161c68bf69
0.6.207
sha256:cb5b349d6ccf8a6333f979d1582549fdf633d4a742290c4ab253dfcc0b5cf660
0.6.208
sha256:04e765365561947e8f148f3419b64ab0b51a322d6aa1cd57efb52381058a6c77