Local-first Chrome extension for capturing Microsoft 365 API tokens and X session cookies, then syncing them into a shared JSON store for CLI automation.
- Captures Microsoft Graph, Outlook, and SharePoint Bearer tokens from browser traffic
- Captures X
ct0andauth_tokencookies through Chrome cookie APIs - Syncs everything into
~/.zero-click/.env.json - Keeps credentials local; nothing is sent to a remote server
- Google Chrome with Developer Mode enabled
- Python 3 for the native messaging host
- A local checkout of this repository
zero-token-extension/
├── extension/ # Load-unpacked Chrome extension
├── native-host/ # Local sync bridge, store helpers, migration tools
├── LICENSE
├── README.md
└── README.zh-CN.md
| Site | Credential | Typical use |
|---|---|---|
| Outlook Web | Graph + Outlook | Mail, calendar, Teams-adjacent Graph calls |
| Teams Web | Graph | Teams chat and Graph-backed actions |
| OneDrive / SharePoint | SharePoint | Files, recordings, transcripts |
| X | ct0 + auth_token |
X session automation |
- Open
chrome://extensions/ - Enable Developer mode
- Click Load unpacked
- Select
zero-token-extension/extension/
- Copy the extension ID from
chrome://extensions/ - Run:
python3 native-host/install_native_host.py --extension-id YOUR_EXTENSION_ID- Reload the unpacked extension
If you previously loaded a different unpacked path, Chrome may assign a new extension ID. Re-run the installer with the new ID when that happens.
- Use Outlook, Teams, SharePoint, OneDrive, or X normally
- Open the extension popup
- Review the captured credentials
- Click Sync to local
The popup shows capture status, token freshness, cookie persistence, and sync results.
Credentials are stored in ~/.zero-click/.env.json with a schema-versioned structure:
{
"schema_version": 1,
"o365": {
"graph": {},
"outlook": {},
"sharepoint": {}
},
"x": {
"ct0": "",
"auth_token": ""
}
}Save a copied token directly:
python3 native-host/save_token.py "eyJ..."The helper auto-detects the token type and updates the shared store.
- Credentials stay in Chrome local storage until you explicitly sync them
- Native sync writes only to local files on your machine
- The repository contains code only; do not commit your real
~/.zero-click/.env.json
- Extension version:
1.0.12 - Native messaging host name:
dev.zerotoken.extension_bridge - After moving the repository to a different path, rerun
native-host/install_native_host.py