Skip to content

Status bar, logs and privacy

The status bar item

twinny owns one item on the right of the status bar.

ShowsMeaning
</>Idle, auto-suggest on
</> offIdle, auto-suggest off; Alt+\ still works
spinnerA completion, chat, edit or review is running; click to stop it
hiddentwinny is disabled (twinny.enabled is false)

Hovering shows the active autocomplete model and provider and whether auto-suggest is on. Clicking while idle opens a menu:

  • turn auto-suggest on or off,
  • open the chat,
  • manage providers,
  • open twinny’s settings,
  • show the log.

Clicking while busy runs Stop generation.

The Twinny output channel

Everything twinny does is written to the Twinny channel in the Output panel. Open it with Twinny - Show logs, from the status bar menu, or by choosing Twinny in the Output panel’s dropdown.

The channel is a VS Code log channel, so each line has a timestamp and a level, and the level picker in the panel (or Developer: Set Log Level…) chooses how much you see:

LevelWhat you see
InfoOne line when a request goes out and one when it returns: the job, the provider and model, the timing, the size of the prompt and reply, and why generation stopped (stop token, line limit, block end, cancelled…)
DebugAlso the full prompt and the full reply, cut to 8,000 characters each
Warning / ErrorFailures with the provider’s raw message. Always written

twinny.enableLogging (on by default) controls Info and Debug; warnings and errors are written regardless. API keys and bearer tokens are redacted before anything is written.

Reading the log answers most “why did it do that” questions: whether the FIM template matched, how long the model took, whether the prompt was too long, which chunks @workspace chose.

Privacy

twinny has no account, no telemetry, and no server of its own. What leaves your machine is exactly what you point it at:

You useWhat is sentTo
A local serverPrompts and contextThat server, on your machine
A paired devicePrompts and context, encryptedYour other machine
A hosted APIPrompts and contextThat vendor
A team gatewayPrompts and context, and the open workspace’s name for routing rulesYour team’s gateway and the backends behind it. It keeps the content only if your team has switched recording on, and says so before you connect; see Connect to a team
GitHub pull request reviewRepository owner, name, PR number, your tokenGitHub
Nothing elseNowhere

Prompts and context mean: the code around the cursor and any completion context; the chat message and everything attached to it; the selection for inline edits; diffs for reviews and commit messages; the last terminal output for terminal features; file chunks for embedding; and, with agent mode on, whatever the model’s tools read in the workspace (files, search results, git output, command output).

The workspace index reranker runs inside the extension. The P2P DHT learns only that a key is reachable at an address. No usage data is collected by twinny’s authors, and the extension makes no requests to twinny.dev or to anywhere you have not set up. Requests to your own servers can start without a prompt from you, such as the warm-up that loads the completion model on a local server.

Secret shield

API keys, tokens, private keys and passwords in a prompt are replaced with placeholders such as REDACTED_GITHUB_TOKEN_1 before the request is sent, and put back wherever the reply uses them, so the model never sees the value and the code it writes still works. It covers chat (including agent mode’s tool results), completions, inline edit and embeddings. It knows the GitHub, GitLab, AWS, Stripe, Slack, OpenAI, Anthropic, Google, Hugging Face and npm token formats, PEM private keys, JWTs, passwords in URLs, and secret-named values in code and .env files; values such as process.env.X or <your-key> are left alone. A chat reply shows N secrets withheld and which kinds; completions log it to the Twinny channel.

twinny.secretShield sets when it runs:

ValueShields requests to
offMachine (default)Hosted APIs, a team gateway, a paired device, and any server not on this machine (localhost, 127.x.x.x, 0.0.0.0 and ::1 count as this machine)
alwaysLocal servers too
offNothing; prompts are sent as they are

A team gateway can shield prompts again before they reach its backends; see Policy.

Files twinny writes

PathContents
~/.twinny/templates/Prompt templates
~/.twinny/embeddings/<workspace>/Workspace index (LanceDB) and manifest
~/.twinny/node/Command-line node identity and trusted devices
VS Code global stateProviders (by default), conversations, paired devices, settings chosen in the sidebar, commands set to always run
VS Code secret storageP2P identity for the extension; team gateway keys
Extension global storageProviders when twinny.providerStorageLocation is file; the P2P host lock

All of it can be deleted; twinny recreates what it needs.