Choosing ai coding tools for teams is a decision about where your code is allowed to travel, not which tool has the better agent. Every vendor in this category sells a set of controls — zero data retention, content exclusion, SOC 2, privacy mode — and every one of those controls has a documented gap that the vendor states in its own documentation and nobody reads. This guide walks each control, quotes what the vendor actually says it covers, and shows where it stops. Every figure here was read from a primary source on August 3, 2026.
Key takeaways
- Zero data retention for Claude Code is not part of the standard Enterprise plan and cannot be switched on from admin settings — Anthropic enables it per organization, on request.
- GitHub's own docs state content exclusion may still leak semantic information via the IDE, and does not apply to symlinks or repositories on remote filesystems.
- Copilot Business is $19 per seat per month and Copilot Enterprise $39; Claude Team is $20 per seat billed annually, $25 billed monthly.
- A formal-verification study of 3,500 AI-generated artifacts across seven models found 55.8% contained at least one vulnerability, with no model grading better than a D.
- Skills and MCP servers are the least-governed surface you will deploy: 26.1% of 31,132 analysed agent skills carried at least one vulnerability.
The short answer for a team lead
Decide the data path before you compare tools. There are three, and they eliminate most of the shortlist immediately.
- Code may go to a vendor API under a commercial agreement. This is most teams. Copilot Business at $19/seat and Claude Team at $20/seat both qualify, and the choice between them comes down to workflow rather than security posture — the full framework for that choice is by execution surface, not features.
- Code may go to a vendor, but nothing may be retained. You need a negotiated agreement, not a checkbox. Budget weeks, not an afternoon.
- Code may not leave your network at all. No commercial SaaS tier satisfies this. The honest answer is an Apache-2.0 agent against a local model, and you own the operational burden that comes with it.
Everything below is the evidence behind that ordering, and the specific sentences in each vendor's documentation that a security reviewer will eventually find on their own.
What team plans actually cost in August 2026
Team and enterprise tiers are priced per seat, and the security features are what you are actually buying — the model access is largely the same as the individual plan.
| Plan | Per seat per month | What the tier adds |
|---|---|---|
| GitHub Copilot Business | $19 | Content exclusion, policy control, IP indemnity |
| GitHub Copilot Enterprise | $39 | The above, plus enterprise-wide governance |
| Claude Team | $20 annual / $25 monthly | SSO, Claude Code included |
| Claude Enterprise | Seat price plus usage at API rates | SCIM, audit logs, custom data retention controls |
Copilot prices come from GitHub's plans documentation and Claude's from Anthropic's pricing page, both read August 3, 2026. Cursor does not publish a team seat price on its security page; it states that a SOC 2 Type II attestation report "is available on request at trust.cursor.com," on a page dated April 24, 2026.
Note what the enterprise upgrade buys at each vendor. At Anthropic, SCIM, audit logs, and custom retention controls are Enterprise-only — a team on the $20 Team seat has SSO but no audit log. If your control framework requires audit logging, that requirement alone moves you a tier, and the per-seat arithmetic changes accordingly.
Enterprise ai coding security is a data-path question
The useful question is not "is this tool secure." It is "which of my code reaches whose infrastructure, under what agreement, retained for how long." Enterprise ai coding security reduces to those four variables, and every vendor answers them differently enough that a generic policy will not survive contact with a second tool.
Ask each vendor, in writing, in this order:
- What is retained, and for how long? Retention for abuse monitoring is separate from retention for training, and vendors frequently answer the second question when you asked the first.
- Which surfaces are in scope? A retention guarantee that covers the CLI but not the web interface, the desktop app, or analytics is common — see the next section for a concrete case.
- What happens to data that passes through an integration? This is where nearly every guarantee ends, and it is the surface teams add fastest.
- What will you evidence in writing? A marketing page is not an artifact. A report under NDA is.
The teams that get this wrong usually get it wrong by generalising from one tool. A policy written around Copilot's content exclusion does not describe Claude Code's behaviour at all, and the reverse is equally true.
Zero data retention covers less than it sounds like
Zero data retention is the control most often written into a security requirement, and it is narrower than the phrase suggests. Anthropic's zero data retention documentation states plainly that ZDR "is not included in the standard Claude for Enterprise plan and cannot be enabled from your admin settings. It is available to qualified accounts and requires separate enablement by Anthropic."
Three consequences follow that catch teams out.
It is granted per organization, not per account. The documentation warns that ZDR "does not automatically apply to new organizations created under the same account." A team that spins up a second org for a new business unit has silently left the guarantee behind.
Coverage stops at the inference call. Chat on claude.ai is not covered. Cowork sessions are not covered. Analytics does not store prompts but does collect "productivity metadata such as account emails and usage statistics." And critically, data processed by "third-party tools, MCP servers, or other external integrations is not covered" — you are told to review those services independently.
Enabling it removes features. Claude Code on the Web, cloud sessions from the desktop app, Artifacts, the /feedback and /bug and /share commands, and Remote Control are all disabled at the backend, because each requires storing prompts or completions. Claude Fable 5 is also unavailable to ZDR organizations, since that model class requires retention.
There is also a floor beneath the guarantee: if a session is flagged for a policy violation, Anthropic may retain the inputs and outputs "for up to 2 years." That is the correct design, and it is not what most people picture when they read "zero."
Content exclusion is a filter, not a boundary
GitHub's equivalent control is content exclusion, available on Copilot Business and Copilot Enterprise. Configured by repository administrators, organization owners, or enterprise owners, it stops inline suggestions in the affected files, stops those files informing suggestions elsewhere, keeps them out of Copilot Chat responses, and excludes them from Copilot code review.
That is a genuinely useful control. It is also documented with two caveats that change how you should describe it in a policy.
The first: "It's possible that Copilot may use semantic information from an excluded file if the information is provided by the IDE indirectly." Your editor knows the type signatures, the symbol names, and the imports from a file you excluded, and it can supply them as context without supplying the file.
The second: "Currently, content exclusions do not apply to symbolic links (symlinks) and repositories located on remote filesystems." Any team with a monorepo stitched together by symlinks, or a network-mounted working tree, has an exclusion list that quietly does not apply where they most assumed it did.
Neither caveat makes the feature worthless. Both make the difference between writing "secrets are excluded from Copilot" in a control document and writing "secrets are excluded from Copilot's direct file access; indirect IDE-supplied context and symlinked paths are out of scope." An auditor will accept the second sentence. The first one is a claim you cannot evidence.
What ai code assistant compliance actually requires
Ai code assistant compliance work fails in a predictable way: the team writes a control statement describing what the tool feels like it does, then cannot produce the artifact when asked. Scope the statement to what the vendor will put in writing.
What you can realistically obtain:
- A SOC 2 Type II report, usually under NDA through a trust portal. Cursor points to trust.cursor.com for exactly this.
- A data processing agreement naming subprocessors, which is what actually matters for GDPR purposes.
- Audit logs, on the enterprise tier and generally not below it.
- IP indemnity, which GitHub extends to Copilot Business and Enterprise customers — conditional on the duplicate-detection setting being enabled, so the condition is part of your control.
What you generally cannot obtain is per-request proof that a specific file never reached a model. If your framework requires that, the requirement is pushing you toward self-hosting, and it is cheaper to discover this before procurement than after.
Two further things belong in the control set and are usually missed. Seat offboarding must be part of the leavers process, because a seat with a live session is an access path that survives a laptop return. And the model provider behind a tool can change — the tool you assessed is not necessarily the data path you have six months later, which is why the DPA's subprocessor list matters more than the vendor's name.
The same mistake in our own code
We cannot show you a team rollout — this site is a single-operator project with no SSO, no SCIM, no audit log, and no compliance audit to report from. What we can show is the same reasoning error the vendor controls above invite, made concrete in code you can read, because this repository's admin panel had to answer exactly the question a security reviewer asks: which layer is actually the boundary?
The panel is gated by Next.js middleware. The middleware says, in its own header comment, that it is not the security boundary:
/** * Gate for `/admin`. * * **This is UX, not the security boundary.** Next.js has had a middleware-bypass * bug class (CVE-2025-29927 — patched in the version this project pins, but the * lesson stands), and middleware is exactly the kind of thing a future config * change can silently stop invoking. */
CVE-2025-29927 is real and is worth a team's attention on its merits: NVD scores it 9.1 critical, published March 21, 2025, described as "it is possible to bypass authorization checks within a Next.js application, if the authorization check occurs in middleware." It was fixed in 15.2.3 and this repo pins next ^15.5.20, so the specific bug is not live here. The architectural decision stands anyway, and that is the transferable part.
So every admin page, Server Action, and route handler re-verifies the session itself. Six independent call sites, not one:
grep -rl "requireAdminSession\|hasAdminSession" app/ # → app/admin/(panel)/layout.tsx # → app/admin/(panel)/newsletter/export/route.ts # → app/admin/(panel)/newsletter/page.tsx # → app/admin/(panel)/page.tsx # → app/admin/actions.ts # → app/admin/logout/page.tsx
The route handler is the one that proves the point. Route handlers do not run layouts, so a guard placed only in layout.tsx would protect the three pages and leave the CSV export of every newsletter subscriber open. That is the same shape as content exclusion covering direct file reads and missing IDE-supplied context: the control is real, and the set of paths it covers is smaller than the set you assumed.
Three more decisions in the same panel, each of which is the kind of thing worth asking a vendor about:
- Session expiry comes from a signed claim, not the cookie.
lib/admin/session.tsreadsexpout of the HMAC-signed payload rather than trustingMax-Age. A client controls how long it keeps a cookie and can replay one after being told to drop it; it cannot alter a signed claim. - Credential checks never short-circuit.
verifyCredentials()compares username and password both, every time, and combines the results afterwards. Returning early on a wrong username makes that response measurably faster, which tells an attacker they found a valid one. - Misconfiguration fails closed.
readAdminConfig()returnsnullrather than a partial config when any of the three environment variables is missing or the signing secret is under 32 characters, so a broken deployment locks the panel instead of opening it.
What did not work here
Two things in that panel do not hold up, and both are the kind of gap a rollout produces at team scale.
The login rate limiter is honest about being ineffective. Its own source comment reads: "Best effort, and worth being honest about why. State lives in the process, so on Vercel it is per serverless instance." Requests spread across instances get independent budgets and a recycled instance forgets everything. It raises the cost of a naive credential-stuffing run and it is not a durable limiter — that belongs at the edge, in a WAF, or in KV. A team that ships this pattern and writes "brute-force protection: implemented" in a control document has written something false.
The second is a deliberate compromise. lib/admin/config.ts reads the credentials but is not marked server-only, unlike every other module that touches secrets, because lib/admin/session.ts imports it and has to run inside middleware on the Edge, where the server-only export condition is not guaranteed to resolve. The mitigation is that nothing reachable from a client bundle imports it. That is a reasoned trade-off rather than a clean win, and at team scale it is exactly the sort of exception that needs a comment, an owner, and a review date — otherwise it becomes a rule nobody remembers deciding.
Skills and MCP servers are the unvetted surface
This is the fastest-growing gap in team deployments, and it is the one Anthropic's ZDR documentation explicitly excludes from coverage.
Agent skills and MCP servers are packages of instructions and executable code that extend what an agent can do, installed with roughly the friction of a VS Code extension and roughly none of the review. The first large-scale study of the ecosystem, Agent Skills in the Wild (submitted January 15, 2026), collected 42,447 skills from two marketplaces and analysed 31,132 of them. It found that 26.1% contained at least one vulnerability, across prompt injection, data exfiltration, privilege escalation, and supply chain risks. Data exfiltration appeared in 13.3% and privilege escalation in 11.8%, and 5.2% showed high-severity patterns the authors describe as "strongly suggesting malicious intent." Skills bundling executable scripts were 2.12 times more likely to be vulnerable than instruction-only skills.
This site ships a skill of its own — a real one, at .claude/skills/write-article/SKILL.md, covered in our guide to skills and slash commands. It is instruction-only and lives in the repository under review, which is the shape that study found least dangerous. That is not a claim of safety; it is the two properties worth requiring.
For a team, the control is boring and effective: skills and MCP servers are dependencies. Treat them the way you treat any other third-party code — an allowlist, review before install, executable-bundling skills reviewed harder than instruction-only ones, and the list owned by someone. The alternative is that each developer's agent has a different, undocumented set of capabilities, which is not a configuration you can describe to an auditor.
How to roll out ai coding tools for teams
Rolling out ai coding tools for teams fails on procurement or on review capacity, almost never on the tool. Sequence it so both surface early.
- Settle the data path first. One paragraph naming what may go to a vendor. Everything downstream depends on it, and rewriting it after seats are bought is expensive.
- Get the paperwork before the pilot, not after. SOC 2 report, DPA with the subprocessor list, and written answers on retention. If ZDR is a requirement, start that conversation immediately — it is a sales-led process, not a settings toggle.
- Pilot across one full billing cycle. Anything shorter measures novelty. A month exposes what metered usage actually costs at your volume, which is the number that surprises people; the tools' billing models differ more than their prices.
- Set the policy defaults centrally on day one. Content exclusion paths, duplicate-detection blocking if you want the IP indemnity, forced login organization, and the skill and MCP allowlist. Defaults set after rollout are defaults nobody applies.
- Measure review throughput, not acceptance rate. Acceptance rate measures whether developers press tab. The bottleneck that appears second is that the same reviewers now face more code, and that is a staffing question.
- Put seat offboarding in the leavers checklist. Alongside the laptop and the SSO deprovision.
On the evidence, plan for review capacity rather than hoping for it. The formal-verification study Broken by Default (submitted April 7, 2026) generated 3,500 code artifacts from seven widely deployed models across 500 security-critical prompts and found 55.8% contained at least one identified vulnerability, with 1,055 formally proven. Its summary judgment is that no model achieved a grade better than a D. That is a statement about unreviewed generated code, not about whether these tools are worth using — but it makes the case that the review stage is the control, and the review stage is the thing teams cut to show a productivity number.
Common mistakes rolling out AI coding tools
- Writing a control statement the vendor will not evidence. "Copilot cannot read our secrets" is not something GitHub's documentation supports. The version scoped to direct file access is.
- Assuming zero data retention is a setting. It is a negotiated, per-organization arrangement that also removes features. Teams discover both facts in week three of a rollout planned for two.
- Treating the free tier as a preview of the paid one. Free-plan behaviour has no contractual bearing on what a paid seat does — a point worth making because free tiers are a genuinely reasonable place to start evaluating, but not to base a policy on.
- Letting skills and MCP servers in ungoverned. Roughly a quarter of published skills carry a vulnerability, and this is the surface explicitly excluded from retention guarantees.
- Buying one seat per developer on day one. Pilot pricing and full-rollout pricing diverge once metered usage is real, and the seat count is the easiest thing to increase later.
- Copying an individual's tool choice to a team. The economics invert: the calculus for a solo developer is about idle months, and the team version is about seats, review capacity, and evidence.
Conclusion
Write the data path down before you shortlist anything. If code may go to a vendor, Copilot Business at $19/seat and Claude Team at $20/seat are both defensible and the choice is a workflow one. If nothing may be retained, start the ZDR conversation now and expect to lose features. If code may not leave the network, self-host and accept the operational cost honestly. Then scope every control statement to the sentence in the vendor's documentation you could show an auditor — and read the exclusions section, because that is where all of them are.
Frequently asked questions
What are the best AI coding tools for teams?
Does GitHub Copilot content exclusion actually stop Copilot reading a file?
Is zero data retention included in Claude for Enterprise?
What compliance evidence can I actually get from an AI coding vendor?
How long should a pilot run before rolling out to the whole team?
Muhammad Kashif
Founder and editor of Devventa, covering AI coding assistants, Next.js and the modern AI development stack.



