Security and data handling
Internal review dated July 1, 2026
This page explains how Vekta is built to protect your work: what data leaves your computer, where it goes, how your account is protected, and how the plugin runs code on your machine. It is written for the person deciding whether Vekta is safe to install, including IT and security teams reviewing it on someone's behalf.
We would rather tell you the real shape of the system than sell you a clean story. Where something is a tradeoff, we say so.
What this document is, and what it is not
This is an internal, AI-assisted security review of the Vekta codebase, performed by the Vekta team. It is not a certified audit, and no independent third party has audited Vekta. We did not hire an outside firm, and we do not claim a penetration test was performed against production.
- Review date: July 1, 2026.
- Code reviewed: the Vekta repository at commit
1bda710. - Scope: the local plugin bridge, the flow of data to our AI provider, authentication, separation between accounts and teams, payments, plan enforcement, secrets and transport, and the plugin's footprint on your computer.
When Vekta grows to the point where an independent audit is warranted, we will commission one and update this page with who performed it and when. Until then, treat this as an honest engineering self-assessment, not a seal of approval.
The short version
Vekta is an AI assistant that lives inside Vectorworks and writes and runs automation for your drawings. Two facts follow from that, and they are the core of the trust model:
- Vekta runs code on your machine. When you ask it to do something, it generates a Vectorworks script and runs it in your Vectorworks session through a small local bridge. That bridge listens only on your own computer (loopback), and every request to it is authenticated with a secret token stored in your home folder with owner-only permissions. Nothing on your local network or the public internet can reach it.
- Vekta sends some of your drawing's information to an AI model to do its job. It does not upload your drawing file. It sends the text you type, a small summary of your document (counts, layer and class names, object types), and whatever a script it runs chooses to return. The AI provider is Anthropic. More detail on this is below.
If either of those is a dealbreaker for your environment, that is a reasonable call to make, and this document is meant to give you enough to make it.
Security controls in place
A plain-language summary of what we verified in this review. Each item is implemented in the product today. This is a snapshot of the controls we have, not a promise that nothing can ever go wrong, and the rest of this page adds the detail behind each one.
On your computer and the plugin
Your account and data
Payments
What leaves your computer, and what does not
Stays on your computer:
- Your Vectorworks drawing file. Vekta never uploads the
.vwx. - The local bridge token and Vekta's local settings, kept under
~/.vekta/with owner-only permissions.
Leaves your computer, to our backend and then to Anthropic:
- The messages you type in the Vekta chat.
- An optional, size-capped summary of the active document: counts of objects, layer and class names, and object types. This is a text inventory, not the drawing. It is capped so it cannot balloon.
- The scripts Vekta generates and the results those scripts return. If a script reads a value from your drawing to answer your question, that value is part of the result and is sent back through the assistant.
Your chat history, including the scripts and their results, is stored in our database so your conversations persist across sessions. You can delete your conversations. Today we retain them until you delete them; we do not yet expire them automatically. We are deciding on a formal retention policy and will state it here once set.
Where your data goes: our sub-processors
- Anthropicprocesses the AI requests (the assistant that powers the chat). The content described above is sent to Anthropic's API to generate responses. How Anthropic handles that data is governed by our commercial agreement with them. We do not send your drawing file.
- Supabase hosts our database and authentication.
- Stripehandles payments. Vekta never sees or stores your card number; checkout happens on Stripe's hosted pages.
- Vercel hosts our backend.
- Resend sends our transactional email (confirmations, receipts).
Account security and authentication
- Sign-in uses Supabase authentication. On our backend, every request that touches your data verifies your session token with the authentication provider before doing anything. We verify the token; we do not merely read it.
- Passwords are handled by the authentication provider, not stored by us.
- Signup does not reveal whether an email address already has an account.
- Staff-only administrative endpoints are gated behind a separate staff check and return “not found” to anyone who is not staff, so their existence is not advertised.
How Vekta runs code on your machine
This is the part most worth understanding.
- The plugin runs a small HTTP server that listens only on your own machine (the loopback address). It is not reachable from your network or the internet.
- The bridge port that accepts script-execution requests requires a secret token. The token is 256 bits of randomness from the operating system's secure generator, written to a file only your user account can read, in a directory only your user account can enter. Token comparison is constant-time.
- The server checks the request's
Hostheader against an allowlist of local names, which prevents a malicious website from tricking your browser into reaching the local server (a DNS-rebinding attack). - Requests are size-capped and cross-origin requests are refused.
The honest tradeoff: because Vekta's purpose is to run automation for you, it does execute code the assistant generates. Before running a script, Vekta checks it for patterns that would crash or hang Vectorworks. That check is for stability; it is not a security sandbox, and it does not attempt to prove that a script is safe. Using Vekta means trusting our backend and the AI model to produce sensible automation for the task you asked for. We take that trust seriously, and the items in “What we found and fixed” below are part of holding up our end.
Separation between accounts and teams
Vekta is multi-tenant: many users and teams share the same backend. Your data is separated from other users' data in our application code. Every route that reads or writes your macros, scripts, workflows, conversations, and profile checks that the data belongs to you (or, for team resources, that you are a member of that team with the right role) before returning or changing anything. Team routes verify your membership in that specific team on every access.
We reviewed all of the backend routes for this. The separation held across the large majority of them. The review found one route where the per-user check was too weak, which we have since fixed (see below).
Payments
- Card data never touches Vekta. Checkout and billing management run on Stripe's hosted pages.
- Our billing webhook verifies Stripe's cryptographic signature on the exact bytes Stripe sent before acting on any billing event, and rejects anything unsigned or mis-signed. This prevents a forged request from changing your plan.
What we found and fixed, and what is still in progress
An honest review finds things. This one did. We are not going to publish the details of specific weaknesses here, because that would be a roadmap for misuse, but we will tell you the categories so you know the review was real and not a formality, and we will be straight about what is done versus still open.
Already fixed (landing in the next release):
- Access-control tightening on the skills feature.The review found a place where the per-user permission check was weaker than it should be. It was the highest-priority item and it is fixed: skill access is now scoped to the owner, the owner's team, and staff.
- Local logging.The plugin's diagnostic log moved from a shared temporary location to a private, owner-only file, so no other account on a shared computer can read it.
- Dependency updates. We updated our web framework and libraries to pick up upstream security patches.
Still in progress:
- Credential storage hardening in our database.
- A written data-retention policy, and confirming and publishing the exact data-handling terms with our AI provider.
We will update this document as the remaining items land. If you are evaluating Vekta for a security-sensitive environment and want to discuss the specifics under NDA, contact us at the address below.
Reporting a security issue
If you find a security problem in Vekta, please email support@vekta.design with enough detail to reproduce it. Please do not post it publicly until we have had a chance to fix it. We will acknowledge your report and keep you updated on the fix.
This is an internal, AI-assisted review dated July 1, 2026, pinned to commit 1bda710. It is not a third-party audit. We will replace this line with the auditor and date if and when Vekta undergoes an independent audit.