Skip to content
Report library
Purpose / Other

Cloudflare One Migrations Skill Security Audit

What the author says it does (original text)

Assess and plan migrations from existing VPN, SWG, or SASE platforms to Cloudflare One, including policy mapping, parity gaps, and rollout.

Independent security check

Security risks found

Files checked
1
Risks found
4
Could it run dangerous commands?Looks for programs run straight after downloading, remote control of your computer, and hidden commands.No risks found
Could it expose your files or keys?Looks for uploads of files containing passwords or keys, and keys written directly in the code.Risks found: 1
Medium risk

Requested production exports and logs may expose sensitive network and identity data

Source references: 2
What we found

The Skill requests structured exports and logs covering users, groups, internal applications, destinations, tunnels, DNS, firewall, DLP, TLS exceptions, and compliance logging. These materials can reveal internal topology, security rules, identity structure, and business activity.

Why this matters

If unredacted production material is submitted to an unapproved AI service, shared workspace, or uncontrolled session, the service operator or other workspace members may gain access to that sensitive information.

These are legitimate migration inputs, but they include identities, internal applications, addresses, tunnels, security policies, exceptions, and activity logs. If uploaded to a model or shared with unauthorized parties, they could expose internal topology, access relationships, and business activity. Users can require disclosure of where data is sent and retained, and provide only minimized, redacted exports.

SKILL.md:13In the instructionsOpen original file
1. Identify the source stack: Zscaler ZIA, Zscaler ZPA, Palo Alto NGFW/Prisma/GlobalProtect, legacy VPN/SWG/SD-WAN, or other.2. Request exports and logs before mapping. Prefer structured exports over screenshots or prose summaries.3. Build an inventory: identities, groups, apps, destinations, connectors/tunnels, DNS/URL/firewall/DLP/TLS policies, objects/lists, locations/sites, exceptions, hit counts, and compliance logging.4. Produce a mapping plan: source object, Cloudflare One target resource, confidence, prerequisites, unsupported/partial mappings, and manual decisions.
Show 1 other places
SKILL.md:22In the instructionsOpen original file
- ZIA: URL filtering, firewall filtering, SSL inspection, DLP, custom URL categories, IP groups, network services/service groups, users/groups/departments, locations, GRE tunnels, and static IPs.- ZPA: app segments, segment groups, server groups, app connectors/connector groups, access policies, IdP/group mapping, private DNS domains, ports, and protocols.- Palo Alto/Prisma: security/NAT/decryption rules, address/service objects and groups, URL categories, HIP profiles, GlobalProtect config, Prisma Access remote network/service connection config, zones, tags, logs, and hit counts.
Could it delete files or keep running?Looks for broad file deletion, disk overwrites, and programs set to start automatically.No risks found
Could it bypass safety checks?Looks for skipped website security checks, excessive file access, or actions that skip your approval.Risks found: 3
Medium risk

Migration can recreate disabled or legacy private connectivity and broaden routes

Source references: 4
What we found

The instructions create a tunnel whether a connector group is authenticated, disconnected, or disabled, then deploy cloudflared per instance and route linked application addresses through it. They also prefer a broader covering subnet over exact host routes.

Why this matters

Connectivity paths disabled in the source system may be recreated. A broader CIDR may also make hosts outside the original application segments routable, causing unintended internal reachability, route conflicts, or a larger impact area.

The instructions do require tunnels for disconnected or disabled connector groups, replica deployment matching old instances, and routes for associated applications. If creation proceeds into deployment or enablement, legacy scope could regain connectivity; broader CIDRs may also enlarge reachability. However, the Skill calls for disabled/audit-mode staging and leaves decommissioning to the customer. Users should require per-group approval, exact CIDR review, and no enablement before validation.

SKILL.md:59In the instructionsOpen original file
- Creating tunnels through the API does not complete connector deployment. Plan cloudflared installation, authentication, and origin reachability separately.- Create one Cloudflare Tunnel per ZPA connector group regardless of connector runtime status (AUTHENTICATED, DISCONNECTED, or disabled). Status is operational, not architectural. Tag disconnected or legacy groups in the tunnel description and let the customer decide what to decommission after validation.- Each ZPA connector instance within a group maps to one cloudflared replica running against that tunnel's token. Match replica count to connector instance count per group to preserve the same topology. A single tunnel token supports multiple simultaneous cloudflared processes. Recommend installing replicas within the same data center but on different hosts or subnets.- For each connector group, identify all server groups linked to it and all app segments assigned to those server groups. IP addresses and CIDRs in those app segments become CIDR routes on the corresponding tunnel; domain names become hostname routes on the same tunnel. Prefer one CIDR route per subnet over per-host /32 routes where a broad subnet covers all app segment IPs.- ZPA bypass means split-tunnel bypass in Cloudflare, not an Access `bypass` decision. Bypass rules map to WARP [Split Tunnel](https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/split-tunnels/) exclude entries. This is a manual configuration step with no API automation - the customer must add bypassed domains and IPs to the device profile split tunnel exclude list through the dashboard.
Show 3 other places
SKILL.md:60In the instructionsOpen original file
- Create one Cloudflare Tunnel per ZPA connector group regardless of connector runtime status (AUTHENTICATED, DISCONNECTED, or disabled). Status is operational, not architectural. Tag disconnected or legacy groups in the tunnel description and let the customer decide what to decommission after validation.- Each ZPA connector instance within a group maps to one cloudflared replica running against that tunnel's token. Match replica count to connector instance count per group to preserve the same topology. A single tunnel token supports multiple simultaneous cloudflared processes. Recommend installing replicas within the same data center but on different hosts or subnets.- For each connector group, identify all server groups linked to it and all app segments assigned to those server groups. IP addresses and CIDRs in those app segments become CIDR routes on the corresponding tunnel; domain names become hostname routes on the same tunnel. Prefer one CIDR route per subnet over per-host /32 routes where a broad subnet covers all app segment IPs.
SKILL.md:61In the instructionsOpen original file
- Each ZPA connector instance within a group maps to one cloudflared replica running against that tunnel's token. Match replica count to connector instance count per group to preserve the same topology. A single tunnel token supports multiple simultaneous cloudflared processes. Recommend installing replicas within the same data center but on different hosts or subnets.- For each connector group, identify all server groups linked to it and all app segments assigned to those server groups. IP addresses and CIDRs in those app segments become CIDR routes on the corresponding tunnel; domain names become hostname routes on the same tunnel. Prefer one CIDR route per subnet over per-host /32 routes where a broad subnet covers all app segment IPs.- ZPA bypass means split-tunnel bypass in Cloudflare, not an Access `bypass` decision. Bypass rules map to WARP [Split Tunnel](https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/split-tunnels/) exclude entries. This is a manual configuration step with no API automation - the customer must add bypassed domains and IPs to the device profile split tunnel exclude list through the dashboard.
SKILL.md:17In the instructionsOpen original file
5. Create dependencies first: identity/[SCIM](https://developers.cloudflare.com/cloudflare-one/team-and-resources/users/scim/), connectors/on-ramps, routes/DNS, lists/objects, TLS bypasses, Access apps/policies, Gateway policies, DLP/CASB, logging.6. Stage safely: use a migration prefix, create disabled/audit-mode rules by default, pilot with small groups/sites, compare logs, then expand rollout.7. Account for every source rule. Each rule must map to a Cloudflare object or an explicit Not Migrated row with reason and security impact.
Medium risk

A high-precedence wildcard allow rule removes Gateway's broad-deny backstop

Source references: 2
What we found

The Skill directs creation of a Gateway Network allow rule matching any private Access application and places it before broad L4 block rules. Traffic classified as a private application will therefore not be stopped by those later Gateway blocks.

Why this matters

If application classification, destination scope, or an Access policy is too broad, traffic that Gateway's default-deny rule could have stopped may proceed to the Access evaluation path. A configuration error could give unintended reachability to internal services.

This is an architectural exception intended to prevent Gateway from blocking private-app traffic before Access evaluates it, not an unconditional allow for all network traffic. Still, its wildcard match and higher precedence mean matching traffic will not receive protection from later broad L4 blocks. Overbroad Access applications or policies would increase the impact. Users should require Access-policy review, scoped matching where possible, and log-based precedence testing before enablement.

SKILL.md:67In the instructionsOpen original file
- Resolver policies can be account-wide. Be careful with overlapping private DNS namespaces across sites or virtual networks; retrieve [resolver policy](https://developers.cloudflare.com/cloudflare-one/traffic-policies/resolver-policies/) docs before making DNS changes.- Each ZPA access policy rule maps to a Cloudflare reusable Access policy. Create all reusable policies before attaching them to Access apps. In default-deny Gateway Network environments, additionally create a Network allow rule with selector "Self-hosted Access App with Private Address is Present" (wirefilter: `any(access.private_app[*] in {"*"})`) at higher precedence than any broad L4 block rules - without it, Gateway blocks private app traffic before Access policy evaluation occurs.- In combined ZIA and ZPA migrations, Gateway Network rules can accidentally block Access private-app traffic. The Gateway Network allow rule above is the fix - place it at higher precedence (lower number) than ZIA-migrated block rules. Add and validate this rule before enabling broad L4 blocks.
Show 1 other places
SKILL.md:68In the instructionsOpen original file
- Each ZPA access policy rule maps to a Cloudflare reusable Access policy. Create all reusable policies before attaching them to Access apps. In default-deny Gateway Network environments, additionally create a Network allow rule with selector "Self-hosted Access App with Private Address is Present" (wirefilter: `any(access.private_app[*] in {"*"})`) at higher precedence than any broad L4 block rules - without it, Gateway blocks private app traffic before Access policy evaluation occurs.- In combined ZIA and ZPA migrations, Gateway Network rules can accidentally block Access private-app traffic. The Gateway Network allow rule above is the fix - place it at higher precedence (lower number) than ZIA-migrated block rules. Add and validate this rule before enabling broad L4 blocks.
Medium risk

Split Tunnel exclusions make selected traffic bypass Cloudflare inspection

Source references: 2
What we found

The Skill maps ZPA bypass entries directly to WARP Split Tunnel exclusions and tells the customer to manually add bypassed domains and IPs to the device profile. Excluded traffic no longer follows the same Cloudflare inspection path.

Why this matters

Overbroad, stale, or incorrect domain/IP exclusions may bypass Gateway, DLP, TLS inspection, and associated logging controls, making malicious or sensitive traffic harder to block and audit.

The instruction explicitly converts source bypass rules into WARP Split Tunnel exclusions and directs the customer to add the domains and IPs manually. Once enabled, those destinations bypass WARP tunnel routing and therefore do not traverse the same Cloudflare inspection path. Broad or stale entries could create monitoring and policy gaps. Users should require a business justification for every entry, narrow domain/IP scope, and periodic review.

SKILL.md:62In the instructionsOpen original file
- For each connector group, identify all server groups linked to it and all app segments assigned to those server groups. IP addresses and CIDRs in those app segments become CIDR routes on the corresponding tunnel; domain names become hostname routes on the same tunnel. Prefer one CIDR route per subnet over per-host /32 routes where a broad subnet covers all app segment IPs.- ZPA bypass means split-tunnel bypass in Cloudflare, not an Access `bypass` decision. Bypass rules map to WARP [Split Tunnel](https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/split-tunnels/) exclude entries. This is a manual configuration step with no API automation - the customer must add bypassed domains and IPs to the device profile split tunnel exclude list through the dashboard.- Agentless/browser apps may become separate public-hostname Access apps per domain. WARP private apps remain private-destination apps.
Show 1 other places
SKILL.md:40In the instructionsOpen original file
- TLS/DLP readiness: source decryption rules, certificate-pinned bypasses, [DLP](https://developers.cloudflare.com/cloudflare-one/data-loss-prevention/) engines/profiles, custom regex, exact-match data, and payload logging expectations.- Connectivity readiness: source tunnels/connectors, private DNS, [Split Tunnels](https://developers.cloudflare.com/cloudflare-one/team-and-resources/devices/cloudflare-one-client/configure/route-traffic/split-tunnels/) or bypass behavior, source IP preservation, [egress IP](https://developers.cloudflare.com/cloudflare-one/traffic-policies/egress-policies/) allowlists, and site-to-site requirements.- Rollout readiness: pilot groups/sites, parallel-run period, rollback owner, source-stack decommission criteria, and monitoring/log comparison plan.
Could it mislead the AI or hide text?Checks the skill instructions for requests to ignore you, influence the report, or hide text in invisible characters.No risks found
Could it change links or payment recipients without asking?Looks for forced referral or payment changes combined with instructions to hide the change.No risks found

Inside this skill

8 instruction sections

This Skill maps Zscaler, Palo Alto/Prisma, or legacy VPN/SWG/SD-WAN configurations to Cloudflare One. It first requests vendor exports and logs, then inventories identities, applications, connectivity, security policies, and exceptions.

View source
SKILL.md:12In the instructionsOpen original file
1. Identify the source stack: Zscaler ZIA, Zscaler ZPA, Palo Alto NGFW/Prisma/GlobalProtect, legacy VPN/SWG/SD-WAN, or other.2. Request exports and logs before mapping. Prefer structured exports over screenshots or prose summaries.3. Build an inventory: identities, groups, apps, destinations, connectors/tunnels, DNS/URL/firewall/DLP/TLS policies, objects/lists, locations/sites, exceptions, hit counts, and compliance logging.4. Produce a mapping plan: source object, Cloudflare One target resource, confidence, prerequisites, unsupported/partial mappings, and manual decisions.

It goes beyond assessment and directs creation of identity, connector, route, DNS, Access, Gateway, DLP, and logging dependencies, so implementation can change the Cloudflare account and network control plane.

View source
SKILL.md:15In the instructionsOpen original file
3. Build an inventory: identities, groups, apps, destinations, connectors/tunnels, DNS/URL/firewall/DLP/TLS policies, objects/lists, locations/sites, exceptions, hit counts, and compliance logging.4. Produce a mapping plan: source object, Cloudflare One target resource, confidence, prerequisites, unsupported/partial mappings, and manual decisions.5. Create dependencies first: identity/[SCIM](https://developers.cloudflare.com/cloudflare-one/team-and-resources/users/scim/), connectors/on-ramps, routes/DNS, lists/objects, TLS bypasses, Access apps/policies, Gateway policies, DLP/CASB, logging.6. Stage safely: use a migration prefix, create disabled/audit-mode rules by default, pilot with small groups/sites, compare logs, then expand rollout.7. Account for every source rule. Each rule must map to a Cloudflare object or an explicit Not Migrated row with reason and security impact.

The workflow includes risk-reduction controls: disabled or audit mode by default, small pilots, object-count reconciliation, review of partial mappings, and explicit rollback paths.

View source
SKILL.md:88In the instructionsOpen original file
- After each migration stage, compare Cloudflare object counts against parsed source counts. Stop on mismatches.- Review every `unsupported`, `partial`, `unmapped`, `needs_identity`, `needs_posture`, and `manual_review` item before enabling policies.- Validate group matching with real pilot users after SCIM sync and re-authentication.- Test TLS inspection and Do Not Inspect behavior before enabling HTTP/DLP blocks broadly.- Keep rollback paths explicit: disable migrated rules by prefix, restore source routing, or revert the pilot group/site.- Before declaring done, produce a source-rule accounting table: migrated object, partial mapping, not migrated reason, security impact, and owner for each manual action.
Start here · InstructionsSKILL.md
cloudflare-one-migrations
Lines connect the instruction file to its sections, not an observed execution order. Select a section to read the source.
Files and check records1 files

Coverage and gaps

Content covered in each file

These are the source ranges included in this check, not a guarantee that every issue has been resolved.

  • SKILL.mdFull text included

This report is for the version above. We read the available code and instructions without running the skill or checking extra packages it installs. This is not a promise of safety: a different version or setup may behave differently.

  • SKILL.mdInstructions

Operations mentioned in code and instructions

Connect to websites
SKILL.md:16In the instructionsOpen original file
4. Produce a mapping plan: source object, Cloudflare One target resource, confidence, prerequisites, unsupported/partial mappings, and manual decisions.5. Create dependencies first: identity/[SCIM](https://developers.cloudflare.com/cloudflare-one/team-and-resources/users/scim/), connectors/on-ramps, routes/DNS, lists/objects, TLS bypasses, Access apps/policies, Gateway policies, DLP/CASB, logging.6. Stage safely: use a migration prefix, create disabled/audit-mode rules by default, pilot with small groups/sites, compare logs, then expand rollout.
SKILL.md:28In the instructionsOpen original file
- ZIA/SWG policies usually map to [Gateway traffic policies](https://developers.cloudflare.com/cloudflare-one/traffic-policies/) and Gateway lists.- ZPA private app access usually maps to [Access application types](https://developers.cloudflare.com/cloudflare-one/access-controls/applications/choose-application-type/), [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-on 
SKILL.md:29In the instructionsOpen original file
- ZIA/SWG policies usually map to [Gateway traffic policies](https://developers.cloudflare.com/cloudflare-one/traffic-policies/) and Gateway lists.- ZPA private app access usually maps to [Access application types](https://developers.cloudflare.com/cloudflare-one/access-controls/applications/choose-application-type/), [Cloudflare Tunnel](https://developers.cloudflare.com/cloudflare-one/networks/connectors/cloudflare-tunnel/), private network routing/DNS, and [Access policies](https://developers.cloudflare.com/cloudflare-one/access-controls/policies/).- Palo Alto rules map only after understanding traffic direction, zones, objects, users, apps, decryption, and hit counts. Do not flatten zones blindly into lists.
Lines read
111
File checksum (to compare versions)
da84245f591d14e9dd58de959de81ea8245ec84320d307ac36ea964a338ef582