Assistant preview · API keys & tokens · VS Code

Put the secret
in your project

Your assistant builds the integration. When it needs a credential, it can display instructions in Porthole and request a setting by name through Keyhole’s preview. You enter the value in a masked box; the assistant checks the recorded status without asking you to paste the value into chat.

0.1.0 is available. Manual entry is released. Assistant requests, inbox and status checks are implemented in a separate, unreleased preview.

Keyhole Your project / .env
  1. The assistant requests a setting
    KEYHOLE_PRACTICE
  2. You enter the value
    The value is masked.
  3. Saved to .env

    KEYHOLE_PRACTICE
    The name and destination, without the value.

Preview illustration A practice request, shown as a sequence. This is not a live form or a screenshot.

Connect your assistant to a service.

Start with Render or Neon. The guides explain what access is needed, how to authorize it, and how to check the connection. Browser sign-in may avoid the need to copy a token.

Connect Render MCP

Follow the authorization and setup steps for using Render’s tools from your assistant.

Connect Neon MCP

Connect your assistant to Neon’s database tools, starting with browser authorization when your client supports it.

Initiate the handoff

Open a local guide with Porthole, register a request by name, and check the recorded status. The reference separates released and preview interfaces.

Choose the destination

A project’s .env is not automatically available to an MCP server. Find the configuration your assistant needs; Keyhole’s settings-file writers are still to come.

From the box to the file.

In the current command flow, run Keyhole: Set a Secret in .env… from VS Code’s Command Palette. Give the setting’s name, then enter its value.

Checks Git first.

Keyhole checks that .env is ignored and untracked. It offers to add an ignore rule and checks again. A tracked file, a reported Git error, or a repository VS Code cannot open stops the write. Folders without Git.

Keeps entry masked.

The value appears as dots. You can show it to check what you entered; Keyhole hides it again when you switch to another app.

Asks before an update.

If the name is already set, Keyhole asks before appending a new value. The old line stays in the file, with a comment identifying which line the new setting supersedes.

Confirms the destination.

After writing, Keyhole checks the saved value and tells you the setting’s name and file. The confirmation does not print the full value.

Keep the next step out of chat, too

Your assistant can still read files.

Keyhole handles entry into .env. It does not prevent an assistant with file or shell access from opening that file afterward. Configure your assistant’s protections before adding a real credential.

Set up your assistant’s file protections

Install Keyhole 0.1.0.

Get it from the VS Code Marketplace or Open VSX, or run:
code --install-extension jlumbroso.keyhole
Then try a harmless practice value.

Before you start.

A local project, opened as a folder in VS Code.

VS Code desktop

Version 1.134.0 or later, with its built-in Git extension enabled. When no repository is detected, Keyhole permits a write without the tracking and ignore checks. Protect .env before later adding that folder to Git.

Checked on macOS

The command flow has been checked by hand on macOS with VS Code 1.141.0. Windows and Linux have not been tested.

Written locally

Keyhole writes to the selected project’s .env and keeps the full value out of its own messages and logs. The extension makes no network requests and opens no listening port.

After saving.

A saved setting does not establish that your app has loaded it or connected to the service. Your app needs a way to read .env, and may need restarting. Hosted services have their own settings; this local write does not configure them.