Data locations
Where cli-ck stores settings, sessions, themes, snippets, and keys on each platform.
cli-ck stores its state in one app data directory plus the OS keychain. The settings UI is the source of truth - hand-editing these files is supported but not the workflow.
App data directory
| Platform | Path |
|---|---|
| macOS | ~/Library/Application Support/app.cli-ck.cli-ck/ |
| Linux | ~/.local/share/app.cli-ck.cli-ck/ |
| Windows | %APPDATA%\app.cli-ck.cli-ck\ |
The bundle id is app.cli-ck.cli-ck. Resolved by the Rust dirs crate, never by raw $HOME / %APPDATA% reads.
Files
| File | Contents |
|---|---|
cli-ck-settings.json | App preferences - themes, fonts, shortcuts, autocomplete, agent toggles, WSL distro, etc. |
cli-ck-ai-sessions.json | Chat session list, active id, and per-session message histories |
cli-ck-ai-agents.json | Custom agents - system prompts and tool subsets |
cli-ck-ai-snippets.json | Composer #handle snippets |
cli-ck-ai-todos.json | In-app TODO lists the agent can read and write |
cli-ck-custom-themes.json | User-built themes |
themes/ | Background images and any per-theme assets |
All seven are managed through tauri-plugin-store. Atomic writes, schema migrations on launch.
You can back up or sync this directory across machines if you want. Just close cli-ck first.
Keychain
API keys never live in the files above. They go to the OS keychain:
- macOS - Keychain, service
cli-ck-ai - Windows - Credential Manager, target
cli-ck-ai - Linux - Secret Service (libsecret) where available; file-based fallback gated behind
#[cfg(target_os = "linux")]for headless environments
Wipe all keys at once by deleting the cli-ck-ai service entries in your OS keychain. The settings file is unaffected.
Cache
cli-ck does not maintain a separate disk cache today. Webview cache is managed by Tauri's WebView2 (Windows) / WKWebView (macOS) / webkit2gtk (Linux) and lives in the platform-default location for those engines.
Editing files directly
You can edit any file in the app data directory while cli-ck is closed. On next launch the store will validate, migrate if needed, and surface errors in the About tab.
The settings UI is still the right way to change preferences - it knows the schema, validates inputs, and triggers the right re-renders (theme swaps, font changes, shortcut rebinds). Editing JSON by hand is for backups and bulk migrations, not daily use.