AI code assistants silently transmit source code to external servers with every suggestion. Block Copilot, Cursor, Tabnine, and 40+ others at the network, endpoint, and IDE layers using our 17,410+ classified AI-tool domains.
Every AI code assistant shares the same architecture: capture code from the IDE, transmit it to an external server, return a suggestion. The developer sees helpful autocomplete — but never sees the network request carrying proprietary source code to a third-party vendor.
The plugin reads the active file contents, cursor position, open tabs, file paths, and import statements.
The captured code is sent to a remote inference server as part of the completion prompt. Often entire files or hundreds of surrounding lines.
The vendor's model processes your proprietary code and returns a suggestion displayed inline in the IDE.
Vendors may cache, log, or use submitted code for model training, evaluation, or service improvement per their ToS.
The scale of data transmission is far larger than most engineering leaders realize. An active developer transmits the equivalent of their entire codebase within a normal work week.
| Tool | Data Transmitted | Scope |
|---|---|---|
| GitHub Copilot | Full active file, snippets from open tabs, file paths, import statements | Active file + neighboring context |
| Cursor | Entire repository indexed locally; selected chunks sent for RAG-based generation | Full repository |
| Tabnine (Cloud) | Function signatures, docstrings, surrounding implementation code | Active file + function context |
| Amazon Q Developer | Code context transmitted to AWS-hosted inference endpoints | Active file context |
| Cody (Sourcegraph) | Codebase-aware context via Sourcegraph indexing infrastructure | Repository-wide |
Code assistants send entire active files to inference servers, not just the current line. A single autocomplete request can transmit hundreds of lines of proprietary business logic, cryptographic implementations, or database schemas to external servers.
Vendor terms often permit using submitted code for model training. Your proprietary algorithms and architectural patterns could surface in completions served to other users, including competitors, without your knowledge or consent.
Developers install code assistant extensions without IT approval. VS Code, JetBrains, and Neovim marketplaces make installation a single click. No elevated privileges required. No software deployment tool involved. No visibility for security teams.
Network-layer blocking is the most effective single control because it operates independently of the endpoint, IDE, and developer configuration. Even if a developer installs a plugin with a personal API key, it cannot function if inference endpoints are unreachable.
Each code assistant relies on well-defined domains. The AI Tools Blocklist catalogs all of these — plus dozens of smaller tools — updated daily.
| Tool | Primary Domains |
|---|---|
| GitHub Copilot | copilot-proxy.githubusercontent.com, api.githubcopilot.com, related GitHub API endpoints |
| Cursor | api2.cursor.sh and associated inference domains |
| Tabnine | api.tabnine.com and cloud model endpoints |
| Cody (Sourcegraph) | sourcegraph.com, cody-gateway.sourcegraph.com |
| Amazon Q Developer | codewhisperer.us-east-1.amazonaws.com and related service domains |
The following RPZ configuration works with BIND, Unbound, Windows DNS, or cloud DNS filtering services. It sinkhole-resolves these domains to cause silent plugin failure without disrupting other IDE functionality.
CNAME . is the RPZ convention for NXDOMAIN response — the resolver returns a non-existent domain, causing the API request to fail immediately. This is faster than sinkholing to 0.0.0.0 and avoids triggering local firewall logs. Unbound: use local-zone directives with always_nxdomain. Windows DNS: create static A records pointing to a dead IP in a dedicated zone.DNS sinkholing blocks most traffic, but determined developers can bypass it with personal DNS resolvers or DNS-over-HTTPS. Defense in depth requires complementary proxy and firewall controls.
Network blocking stops code assistants from reaching inference servers, but doesn't prevent plugin installation. Endpoint controls close the gap by preventing plugin installation, disabling telemetry, and locking down IDE configurations through managed policies.
github.copilot.enable block handles cases where the extension is already installededitor.inlineSuggest.enabled: false blocks all AI providers: Copilot, Tabnine, Cody, Windsurf, and Supermavenextensions.allowed block prevents installing new code assistants without IT approvalidea.plugins.blocked prevents specific plugins from loading even if installed; set idea.allow.third.party.plugins=false for maximum restrictionDeploy IDE settings enforcement across your fleet using platform-appropriate tools. Block standalone AI editor installations (Cursor, Windsurf) alongside IDE plugin restrictions.
Create a GPO that copies managed settings.json to each workstation, sets it read-only, and applies a registry key preventing VS Code overrides. Add software restriction policies to block Cursor and Windsurf executables.
Deploy settings via Jamf, Kandji, or Mosyle configuration profiles. Use restricted software policies to block Cursor.app, Windsurf.app, and other standalone AI code editors.
Deploy settings.json as a template and set the immutable flag with chattr +i to prevent local modification. Manage via Ansible playbooks or Salt states.
Rather than trying to block every AI code assistant individually, restrict extension installation to an approved allowlist. This inverts the problem: instead of chasing new AI tools as they launch, you maintain a curated list of permitted extensions. Any extension not on the list is blocked by default.
Some code assistants operate as CLI tools or terminal integrations rather than IDE plugins — tools like aider, Claude Code, and OpenAI Codex CLI. These bypass IDE-level controls entirely and must be blocked at the network layer or through application control policies that prevent their binary execution.
Each code assistant has a distinct telemetry profile. Understanding these data flows helps security teams decide which tools to block outright, which to permit with controls, and which represent acceptable risk.
| Tool | Primary Channel | Secondary Channel | Trigger |
|---|---|---|---|
| GitHub Copilot | Active file contents, neighboring snippets, cursor position sent to inference servers | Suggestion accept/reject events, editor state, usage metrics | Every keystroke |
| Cursor | Entire repo indexed locally; selected chunks sent via RAG. Files never opened may be transmitted. | Session metadata, query patterns | On query + background indexing |
| Tabnine (Cloud) | Function signatures, docstrings, surrounding implementation code | Usage analytics, model feedback | Every keystroke |
| Amazon Q Developer | Code context to AWS-hosted inference endpoints | Service telemetry to AWS | On suggestion request |
Even when suggestions are disabled, the primary channel may still transmit code context. The telemetry channel reveals development patterns, working hours, and tech stack composition regardless of suggestion acceptance.
Copilot and Tabnine transmit code context on every keystroke. A single hour of active development generates hundreds of API requests, each carrying lines of proprietary source code.
Cursor and Cody index entire repositories to provide context-aware suggestions. Files never opened by the developer may still be transmitted to inference servers as retrieval context.
Even with code suggestions disabled, most assistants still collect usage telemetry: editor events, language distributions, session lengths, and feature usage patterns that reveal development activity.
Some code assistants cache submitted code snippets server-side for quality improvement and debugging. Even after you stop using the tool, your code may persist on vendor infrastructure indefinitely.
Before implementing blocks, capture baseline traffic from each code assistant. Each tool contacts between 5 and 15 distinct domains during a typical session.
Set up each code assistant in an isolated test environment with full network capture enabled.
Trigger completions, chat queries, and code navigation to exercise all communication paths.
This reveals inference endpoints, telemetry domains, update checks, auth endpoints, and CDN domains.
Blocking only the primary inference endpoint is insufficient. Telemetry endpoints alone reveal what files are being edited, languages in use, and coding activity.
Every blocking layer on this page — DNS, firewall, IDE policy, EDR — draws from the same continuously refreshed classification database.
Network and endpoint controls block real-time code assistant usage. But a comprehensive strategy must also address the source control and CI/CD layers where AI-generated code traces may persist.
Detect and flag potential AI-generated code using heuristics: verbose comments explaining obvious operations, style inconsistencies within a single commit, and patterns generated by specific models. Serves as monitoring, not a hard block — flags for human review to avoid disrupting velocity.
Disable code assistant integrations at the platform level. Copilot's "repository context" feature can pull code from private repos the developer has access to — even repos they're not actively working on. Block third-party OAuth app access to prevent this.
.git/hooks/pre-commit.Comments referencing Copilot, AI generation, or similar terms. Some devs add attribution; some orgs require it via AI use policy.
Comments mentioning Cursor, Codeium, Tabnine, or Supermaven in code files.
AI assistant entries in .vscode/extensions.json are hard-blocked (exit 1) since they spread tool adoption across teams.
.cursor/ directories and .cursorignore files are hard-blocked to prevent Cursor project configs in shared repos.
Major SCM platforms offer organization-level settings to control code assistant access. Configure these alongside pre-commit hooks for defense in depth.
| Platform | Setting | Effect |
|---|---|---|
| GitHub Enterprise | Organization Settings > Copilot | Disable Copilot org-wide, regardless of personal subscriptions |
| Organization Settings > Third-party access | Restrict OAuth app access to prevent code assistant authentication | |
| Organization Settings > Actions | Restrict allowed Actions — some AI tools run as Actions accessing repo contents | |
| GitLab | Admin Area > Settings > Visibility & access controls | Restrict PAT scopes and block third-party API access to repo data |
| Bitbucket | Workspace-level application access settings | Control which apps can access workspace repos. Self-hosted offers granular OAuth app ID blocking. |
No blocking strategy is 100% effective. Developers report 25–55% productivity gains from AI assistants — motivation is high. Assume some will find workarounds: personal hotspots, home VPNs, or browser-based tools on personal devices.
~/.vscode/logs/ for AI tool installation eventscursor, windsurf, codeium_language_server, tabnine-binary, copilot-agentMonitor for blocked DNS queries to code assistant domains — these indicate attempted usage. Track blocked proxy connections and firewall denies. Alert on new, previously-unseen code assistant domains from the daily blocklist updates. Correlate with user identity for targeted enforcement conversations.
Detect code assistant process execution via EDR. Monitor VS Code extension directory for AI tool installations. Track IDE configuration file changes that re-enable blocked features. Alert on standalone code editor installations (Cursor, Windsurf, Replit Desktop).
Track these metrics monthly to demonstrate program effectiveness and justify continued investment. Present alongside developer productivity metrics to address the pushback that blocking reduces velocity.
Number of blocked connection attempts. Trending down indicates policy adoption.
Count of unique devs attempting blocked tools. Identifies teams needing communication.
New code assistant domains in the blocklist. Demonstrates evolving threat landscape.
Policy violations detected and resolved. Measures enforcement effectiveness.
Download a free sample including all code assistant domains. Request an enterprise trial for the full 17,410+ domain feed with daily updates and category-level filtering.
Tell us about your development environment and code protection requirements — we will help you implement a comprehensive blocking strategy.