broke-codebroke-code is a VS Code extension that runs a coding agent against LLM services without native tool calling. Some services speak the OpenAI chat API but reject the The current version is a chat agent that reads and changes your workspace: pick a model, ask a question or a change with files and folders attached, and the model reads files, lists folders, searches the workspace, and creates or edits files until it is done. Each change opens as a diff and waits for your Accept or Reject in the chat, unless you turn on auto-approval in your user settings. You can follow each step, stop the agent at any time, read the model's reasoning collapsed above its answer, and come back to past conversations. The model also sees the name and description of each of your skills, and loads a skill's instructions when your task matches it. Commands and slash commands come next. Requirements
Configure a providerA provider is an LLM service broke-code talks to. List your providers in your user settings
(
broke-code appends Corporate or self-signed certificatesbroke-code trusts the certificates your system trusts. If a provider uses a certificate signed by a corporate
or self-signed authority that is not in the macOS Keychain, the chat reports a certificate error naming the
provider. Add a
The file adds to the system certificates for that provider only; it never replaces them. Certificate verification cannot be turned off. Set an API keybroke-code asks for the key of each new provider. To set, replace, or clear a key later, run broke-code: Set API key from the Command Palette and pick the provider. Leave the box empty for a provider that needs no key, such as Ollama. Keys live in the editor's secret storage (the macOS Keychain), never in Mention files and foldersType When you send the message, broke-code reads each mention and sends it to the model with your text:
Each mention shows as a chip under your message with what was attached or why it was not. The menu lists files from the workspace folders, except those hidden by your How the agent worksEach message starts an agent turn. The model may answer at once, or write a tool call in its reply; broke-code runs the tool, sends the result back, and asks again, until the model answers with text and no call. The agent has three read tools, which run without asking you, inside the workspace folders and the folders of the skills loaded in the conversation (see Skills):
The agent also has two write tools, which ask you first, inside the workspace folders only, never in a skill folder outside them:
When the model asks to change a file, the editor opens a diff beside the chat, titled with the path: the file as the model planned to change it on the left, the proposed text on the right. The chat shows Accept and Reject under the call, with an optional reason. Accept writes the change and closes the diff; the write is atomic, so the file holds either its old text or the new one, even after a crash. Reject closes the diff and writes nothing; the model reads that you rejected the change, with your reason when you gave one. Nothing is written when the file changed on disk since the model planned the change, or when an editor holds unsaved changes to it: save or revert them first. Stop, New chat, or opening another conversation while a change waits closes the diff and writes nothing. To apply changes without asking, set Each tool call shows as a compact row under the model's text: the tool, its main argument (a path or a search pattern), and whether it worked with the size of its result. Click the row to see the result the model received. A path outside the workspace, and outside the folders of the loaded skills, is refused, and the model is told why. The agent turn ends when the model answers with text and no tool call. It also ends when you click Stop, at any step; after three malformed tool calls in a row, with a message saying so; after 50 tool steps (or the limit you set), with a message saying the step limit was reached; and before a request that would fill the model's context, with a message asking you to start a new chat. A malformed call is sent back to the model with what is wrong, so it can try again; so is an empty reply, which counts as a malformed call. Context size and step limitThe panel header shows, next to the model picker, how much of the model's context the next request would use, in tokens and as a percentage. It is an estimate: the characters of everything the request sends (the instructions, your messages with their attachments, the model's answers, and the tool results, but not its reasoning) divided by 4. Before each request of an agent turn, broke-code checks that estimate: when it leaves less than one eighth of the context for the reply, the turn stops without sending the request, and the chat asks you to start a new chat with New chat. broke-code never shortens or summarizes the conversation by itself. LLM services do not report a model's context size, so broke-code reads it from the
An entry that is not a whole number of at least 1 is ignored. A change applies from the next message; an agent turn in flight keeps the limits it started with. Like the providers, both settings are read from user settings only. broke-code adds your instructions to every request: SkillsA skill is a folder holding a
broke-code reads skills from two places only: your personal skills in
When a task matches a skill's description, the model calls load_skill with its name and receives the
instructions, without the frontmatter, cut to their first 2,000 lines, together with the real path of the skill's
folder. From then on, for the rest of the conversation, the model may read the files of that folder with
read_file, list_files, and search, by that absolute path, even for a personal skill outside the workspace.
It cannot change the files of a skill outside the workspace, and before the load it cannot read them; there, a file
that is a symbolic link to somewhere outside the skill's folder is refused. A workspace skill's folder is part of the
workspace: the usual rules apply, so the model can change its files with your approval. A skill loaded in a past conversation is loaded again when you reopen it, as long as it is still
there. A skill whose Past conversationsbroke-code saves each conversation of a workspace, so closing or reloading the window keeps it. History in the panel header lists the workspace's conversations, newest first, each with its first message and the date of its last change; the one shown is marked. Click a conversation to reopen it and continue where you left off, or Delete it. New chat starts a new conversation and keeps the previous one in the list. History works without a provider too; sending a message needs one. A workspace keeps its 50 most recent conversations; older ones are deleted. A reopened conversation resends your earlier messages as they were sent, with the files and folders attached then, and the tool results the model received; broke-code does not read them again. A reply that was still streaming when the window closed comes back stopped, with the text received so far. Conversations stay on your machine, in the editor's storage for that workspace, and never hold an API key. A window with no folder open keeps its conversation in memory only. Tested modelsbroke-code's tool calls are measured on local models with Ollama:
Both models pass the four tasks: 10 runs of 10 each, except Privacybroke-code collects no telemetry. It contacts only the providers you configure. CreditsThe chat panel's visual style and the LicenseMIT. See LICENSE. |