AstraCodeA coding agent for VS Code, running on FPT Cloud models through the AstraWork gateway. Install
Then open the AstraCode icon in the activity bar. Two icons, two togglesAstraCode contributes two containers, so you get two independent toggle icons in the activity bar:
Both share a single provider, so they are always in the same state — change the model on one side and the other updates immediately. Putting it in the same tab row as Claude CodeThe goal: AstraCode sitting in the same row as The quick way — right-click the AstraCode view title and choose VS Code's own Move View, then pick Secondary Side Bar. The reliable way — drag the AstraCode (right) icon out of the left activity bar and drop it into that tab row. If you cannot see the right-hand bar, open it with You only do this once; VS Code remembers it for good, including across restarts. Why this is not fully automatic: VS Code exposes no API for an extension to place a view in the secondary side bar — panel placement is the user's call. That is a platform limit that applies to every extension. The command above only opens the destination picker and points the way. Title bar buttonsJust two buttons, for the two things you do every day:
Nothing else sits up there — settings has its own gear button next to the composer, and Or open it as a tab
Permissions — what decides how far the agent can goThree modes, switched from the picker below the chat box or with
Two constraints no setting can turn off:
"Always allow" is scoped to the directory containing the file, not the whole workspace: approving an edit to Tracking changesEvery file the agent touches goes into the session change log, visible in three places at once:
The diff is against the original content from before the agent touched the file, not against what is on disk — the log keeps its own copy of the original, so it stays correct even after the file has been overwritten several times. Edits are applied through Running commandsCommands run directly on your machine by default. Change it with
AstraCode never silently falls back from In Paths are translated both ways, Memory and long sessions
A rule you only say in the chat lives in that conversation and nothing more — Keep it short. Every line here costs context on every later question. A file from the repo is capped at 12k characters and scanned for prompt-injection signals — it carries as much weight as the system's own words, so you need to know when it holds something suspect. Context — the gauge appears from 70%. At 85% the conversation compacts itself: the most recent turns stay verbatim, the earlier part becomes a summary (goal / what was learned / what changed / what is left). Turn it off with
Sessions — saved automatically after each turn, outside the repo. The chat panel title bar has exactly two buttons for this:
The same actions are available from the Command Palette (AstraCode: New chat / AstraCode: Chat history / AstraCode: Reopen a past session) or Up arrow in an empty composer walks back through prompts you have already sent, including those typed in the The list only shows sessions from the folder you currently have open, and a conversation is only saved after its first answer. Slash commandsType
Your own commands go in
Commands from the repo ( Verifying after an edit
On failure the output is fed back into the conversation so the agent can keep fixing. On success nothing is added to the context. A value set in the repo's ConfigurationEverything below lives in a settings popup inside the chat panel — the gear button next to the attach button, or The popup has four groups: Account · Models · Usage · Preferences. Chat is blocked until you sign in. AstraCode's models come from your AstraWork account and from no other source, so "not signed in" is not a limited-use state — it is a not-usable state. The panel shows the sign-in gate instead of an input box that would swallow whatever you typed. 1. Sign in Click Sign in to AstraWork → the browser opens The token is stored in VS Code SecretStorage (encrypted by the operating system), never written to AstraWork issues no refresh token, so an expired session means signing in again — that is the gateway's design, not a gap in the extension. 2. Pick a model The model list, per-model access and quotas all come from the account you signed in with. One picker, one model — it handles everything: planning, edits, titles and summaries. Capabilities of every model in the list — tool calling, context window, injection resistance — sit behind the collapsed row under the picker. 3. Server addresses — nothing to do The AstraWork gateway and web addresses are built into the extension. There is no setting for them, and a fresh install talks to the right place without being told. Capability profileThe model table shows You do not need to measure anything to get started. A model missing from that file runs on assumed capabilities — native tool calling, image input, context window taken from the gateway's model list. If an assumption is wrong, the first turn stumbles, AstraCode switches to the XML path and remembers it, with a one-line notice. Measuring only matters when you want to know a model's prompt-injection resistance before giving it the Where AstraCode keeps things:
|
| Path | What is in it |
|---|---|
settings.json |
Your settings. Safe to copy to another machine — no secrets in it |
settings.local.json |
Overrides for this machine only (CLI) |
credentials.json |
The AstraWork token, 0600. In VS Code the token lives in SecretStorage instead |
state.json + backups/ |
Written by the app, not by you: startup count, when each repo was last used |
models.json |
Capability profile from astracode measure |
projects/<repo>/ |
Chat sessions, one directory per repo |
file-history/<session>/ |
The file snapshots /undo restores from |
history.jsonl |
Every prompt you have typed, for up-arrow recall |
cache/, .last-cleanup |
Disposable. Cleaned once a day |
commands/, skills/, agents/ |
Your own slash commands, skills and sub-agents |
Point ASTRA_HOME somewhere else to move the whole directory.
Settings in settings.json
| Key | Default |
|---|---|
astra.model |
the coding model AstraCode ships with — edits, commands, titles and summaries |
astra.planModel |
the planning model AstraCode ships with — images, and everything while plan mode is on |
astra.permissionMode |
ask |
astra.sandbox |
host |
astra.sandbox.network |
none |
astra.sandbox.dir |
sandbox |
astra.autoCompact |
true |
astra.verifyCommand |
"" (read from user settings only) |
astra.logLevel |
info |
Logs: AstraCode: Show logs in the Command Palette. Everything logged has already passed through the secret redactor.