Sensible Claude Code DefaultsInstall from the VS Code Marketplace Sets up Claude Code to run on AWS Bedrock, then keeps checking that the setup
still works. It writes a short, fixed list of keys to your own
An independent tool. Not affiliated with, endorsed by, or sponsored by Anthropic, PBC. Getting startedClick the braces-and-heartbeat icon in the activity bar on the left. The panel that opens does the rest:
That is the whole setup. Afterwards the panel shows a single line — everything working, or the one thing that isn't and the button that fixes it — with the full list of checks behind Details for whoever is helping you. Every panel action is also in the command palette under Sensible Defaults, for people who prefer it. Corporate Windows devicesTo open Claude in a terminal, run Sensible Defaults: Open Claude Terminal from the Command Palette or use the terminal icon in the Sensible Defaults view title. It launches the verified executable directly, without relying on PATH. Review and trust your workspace first; the launcher does not bypass Workspace Trust. To also make This does not install another Claude copy, create launcher scripts, modify the system PATH, or bypass application controls. Existing executables and script launchers are preserved. Disable Claude Terminal Repair reverses the preference; reopen terminals afterwards. External terminals still need an IT-approved standalone CLI installation. The repair is native-Windows only, not a change to the Windows host from WSL or a remote Linux window. If a device blocks settings writes or secure key storage, setup shows the failure
and keeps your input for retry. Use Copy Diagnostics for Support to collect a
redacted report. A certificate error may indicate TLS inspection, but does not
prove a specific proxy vendor: ask IT to check the trusted CA configuration. The
extension does not import certificates, change Windows permissions are checked using What this extension writesEverything is written to your user profile, never inside a project folder:
Opting into Windows terminal repair also saves the
Inside
The shipped defaults use Amazon's global inference profiles. Requests can be processed outside the AWS region receiving the call. The Model availability section lists model versions and their documented processing geographies, with exact IDs and the last access result for your credential and source region. The catalogue is refreshed through the same GitHub channel as the defaults, so compatible new models can appear without an extension update. Use Processing policy to limit which geographies the extension may probe and recommend. By default it follows the scopes of your configured model IDs. It never silently switches to a global profile. A custom ID whose geography is not in the catalogue is labelled Unclassified; it is not a residency guarantee. This extension preference does not enforce AWS IAM policy or establish legal compliance. Enable automatic checks to refresh configured models after 24 hours and alternatives after seven days, when VS Code starts or regains focus. Explicit access denials are eligible after a day; connection failures back off. New catalogue targets are checked when eligible. Fresh results are reused across windows and restarts. Recheck models refreshes immediately. Each configured Opus, Sonnet, and Haiku ID is verified separately. A working Haiku cannot hide a blocked Sonnet. A blocked unselected release is informational; it does not make a working setup unhealthy. Review available upgrade previews freshly verified candidates in your permitted geography. Existing pins stay in place until you apply a change, and user/Claude Code edits remain protected. Model evidence is saved locally under the extension's storage directory, outside Settings Sync. It includes IDs, safe reason codes, and timestamps, never the API key. A one-way credential identity is computed in memory and included in the opaque cache context hash; key replacement or removal invalidates the old evidence. Copy administrator request prepares access details for you to review and send yourself. Both lists are checkable: the nine keys are Before any change you get a preview listing every line that will change, and a copy of the previous file is saved to the backups folder above. Restore Previous Configuration puts any of those copies back. Claude Code writes some of these keys too. Its own If you use WSL, Remote-SSH, or a dev containerThe settings are written on the machine Claude Code runs on, not the machine your screen is attached to. This is the right thing, but it surprises people, so here it is spelled out. When you open a folder with WSL, Remote-SSH, or Dev Containers, VS Code splits itself across two machines: the window stays on your own computer, and everything that runs code moves to the other side — the Linux distribution, the server you connected to, the container. Claude Code goes with it. So does this extension. That means the file being managed is the one over there:
A few consequences worth knowing:
Not sure which file you are looking at? Run Check Configuration, then Copy
Diagnostics for Support — the report names the exact path, and a Remote row
saying Where your Bedrock API key is storedYour key lives in your editor's secret storage, which is encrypted on disk with a key held in your operating system's keychain — Keychain on macOS, DPAPI on Windows, the login keyring on Linux. That copy is the real one: it is what Set Bedrock API Key writes, what Update Bedrock API Key replaces, and what the age reminder measures. It is also written into
Remove Bedrock API Key clears all three at once: secret storage, settings file, and terminals. It does not cancel the key at Amazon — do that in the Bedrock console if you want it to stop working everywhere. If you already ran Claude Code's own None of this stops the key being read by what Claude Code starts. That is the first item under Residual risk, and it is the part worth reading. Network requestsThe extension makes the following categories of outbound request. It sends no
telemetry, analytics, or crash reports. Any future telemetry would require an
opt-in, disclosure, and honouring 1. Recommended settings and model catalogue.
At most once an hour per window when checks run, and on Check for Updated Recommendations. No key or machine identifier is sent. A five-second timeout falls back to the last valid cached copy, then the bundled copy. Organisations can supply their own manifest URL. 2. Model availability metadata.
Uses your Bedrock bearer key to check agreement, entitlement, authorisation, and
regional availability. This requires permission for 3. Model invocation checks.
During setup, when you run a connection/model check, or after you enable automatic
checks. Each request sends a fixed AWS can automatically initiate a Marketplace subscription on first invocation if the calling principal has the required permissions. Preflight reduces unnecessary invocations but is not an atomic subscription guarantee. An organisation requiring a strict no-subscription policy must withhold Marketplace subscription permissions. The extension never calls agreement-creation APIs. Automatic checks are off until enabled, and can be disabled at any time. These requests are not proxied by anything of ours: the extension has no proxy
configuration of its own and uses the editor's own network stack, so your
Residual riskTwo things this extension cannot fix, stated plainly rather than left for you to discover. Every program Claude Code starts inherits your keyClaude Code passes credentials to everything it starts through the process environment. Every program Claude Code launches — every tool, every MCP server, every command it runs on your behalf — inherits your Bedrock API key. Storing the key in a keychain does not change that, and no setting in this extension can. What actually limits the damage is the key itself: how much it is allowed to do, and how long it lasts.
The project scan finds some copies of your key, not all of themWhen a key is saved, the panel checks your open project folders for a copy of it
— the case where a tutorial told you to paste it into a It looks at the places a key actually gets pasted, inside the folders you currently have open:
It does not look at anything else — your source files, your notebooks, your editor's own settings, your shell history, your terminal scrollback, or any folder you do not have open in this window. It ignores files larger than 1 MB. It skips some folders. It stays inside the folders you opened. It does not follow shortcuts or symbolic links out of a folder. If a folder you opened is itself a shortcut to somewhere else, the scan reads the real location it points at and names files by where they actually are. It stops after three seconds, or 5,000 files. On a large project it will not have looked at everything, and it says so — a row reading "we ran out of time" is not a clean result, and the panel never reports one as if it were. If it finds a copy of your key and runs out of time, it tells you both: the file it found is real, but the list is not necessarily the whole list, and running the check again picks up where it left off. It does not look inside your git history. If the key has ever been committed, it is in past versions of the repository and in every clone of it. Deleting the line today does not remove it, and neither does deleting the branch. When the scan finds your key in a file that git is tracking, it says so and tells you to replace the key — because replacing it is the only thing that actually works. It never edits your files. Nothing in this extension writes inside a project folder, ever. If your key is found, you are shown which file, and you remove it. It does not run in a folder you have not trusted. Reading your project files is the one thing this extension does that touches your code, so in a restricted window it does not read them at all, and the panel says the folder was not checked rather than pretending it was clean. Getting helpCopy Diagnostics for Support puts a report on your clipboard describing your
setup: your versions and platform, which recommended settings are in force, your
Questions and bugs both go to GitHub issues. A way for your key to end up somewhere it should not be is the one thing that does not go in a public issue — email security@cutler.sg instead; the scope is in SECURITY.md. UninstallingUninstalling the extension removes the extension. It does not undo what the extension wrote, so here is the rest of it. Do this first, while the extension is still installed: run Remove Bedrock API Key. That is the only convenient way to get the key out of your editor's secret storage — VS Code does not clear an extension's secrets when you uninstall it (microsoft/vscode#123817, still open), and there is no per-extension item you can go and delete by hand on any platform: the secrets live encrypted inside VS Code's own state, and the only thing in your macOS Keychain, Windows DPAPI store or Linux keyring is the key that decrypts all of them, shared by every extension. If you have already uninstalled, reinstall, run the command, and uninstall again. Then, at your leisure:
Why this existsClaude Code on Bedrock needs half a dozen environment variables to be right at once, in a file most people have no reason to open, and the failure modes all look the same from the outside: it just does not work. This extension writes those variables, keeps your key somewhere better than a shell profile, and turns "it does not work" into a sentence naming which one of them is wrong. That is the whole of it. It is not a proxy and it is not a gateway: your requests go from Claude Code straight to AWS, it never sees a prompt or a response, and it performs only the minimal inference checks described above. It configures a tool that somebody else wrote, and says so. MIT licensed. The source is at github.com/cutler-sg/sensible-claude-code-defaults — every claim on this page is a file in it. |