Skip to content

Security: workerkit/cli

Security

SECURITY.md

Security

Reporting a vulnerability

Email security@workerkit.ai. Please do not open public issues for security reports.

This document covers the CLI specifically. For the platform, see the Security Overview, Privacy Policy, and Terms of Service.

How the CLI handles your credential

  • wk auth login obtains a manager key approved in the browser by an account admin. The key is delivered only to the terminal that started the login (the browser never displays it), and it appears immediately in your dashboard's manager-key list, where it can be revoked at any time.
  • The key is stored in your OS keychain (Windows Credential Manager, macOS Keychain, or the Secret Service on Linux) when one is available. Without a keychain it falls back to a file under your user config directory, written with owner-only permissions on POSIX systems.
  • Resumable login stores its request ID and polling secret in a private pending-request file in that config directory. It uses owner-only permissions on POSIX; on Windows it inherits the directory's user-scoped ACL. The polling secret is sent only in a request header and is never printed, placed in a URL, or included in JSON output. wk auth login --cancel revokes any uncollected key before removing the pending request.
  • When WK_CONFIG_DIR is set, keychain entries use a namespace derived from that directory so test, automation, and normal profiles do not overwrite one another. Existing profiles retain their original keychain namespace.
  • WK_MANAGER_KEY (environment variable) always takes precedence and is never written to disk.
  • The CLI never logs the key; debug traces redact pe_mgr_ material.
  • wk auth status --json returns only nonsecret credential metadata and key information.

What the CLI renders

API responses can contain text produced by AI workers. Everything rendered to a terminal is stripped of escape sequences, control characters, and bidirectional-override characters. --json preserves API data before display transformations (JSON formatting can differ from the original response bytes). It is intended for pipes and preserves control characters as JSON escapes.

Telemetry

None. Nothing about your usage is collected or reported. The only version signal WorkerKit receives is the CLI's User-Agent header on requests you already made.

For completeness, the CLI makes exactly one outbound request that is not an API call: at most once every 24 hours it fetches its own public package document from registry.npmjs.org to tell you a newer version exists. It is anonymous, sends no credential or identifier, runs only on an interactive terminal, and is skipped entirely under CI, WK_NO_UPDATE_CHECK, --json, and --plain.

There aren't any published security advisories