cloudflare-tunnel

Cloudflare Tunnel API for secure tunnels. Use when user mentions "Cloudflare tunnel", "argo tunnel", or secure connectivity.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "cloudflare-tunnel" with this command: npx skills add vm0-ai/vm0-skills/vm0-ai-vm0-skills-cloudflare-tunnel

Cloudflare Tunnel / Access Authentication

Authenticate HTTP requests to services protected by Cloudflare Access using Service Token headers.

When to Use

  • Access internal services exposed via Cloudflare Tunnel
  • Authenticate to Cloudflare Zero Trust protected applications
  • Make API calls to services behind Cloudflare Access
  • Bypass Cloudflare Access login page for automated requests

Prerequisites

export CF_ACCESS_CLIENT_ID=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx.access
export CF_ACCESS_CLIENT_SECRET=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Create Service Token

  1. Go to Cloudflare Zero Trust Dashboard
  2. Navigate to AccessService AuthService Tokens
  3. Click Create Service Token
  4. Name your token and click Generate token
  5. Copy both Client ID and Client Secret (shown only once!)

Configure Access Policy

Ensure your Access Application allows service token authentication:

  1. Go to AccessApplications → Select your app
  2. Add a policy with Service Token as Include rule
  3. Select your created token

Usage

Basic curl Request

Add two headers to authenticate through Cloudflare Access:

curl -s \
  -H "CF-Access-Client-Id: $(printenv CF_ACCESS_CLIENT_ID)" \
  -H "CF-Access-Client-Secret: $(printenv CF_ACCESS_CLIENT_SECRET)" \
  "https://your-protected-service.example.com/api/endpoint"

With Additional Authentication

Many services require both Cloudflare Access AND their own authentication:

curl -s \
  -H "CF-Access-Client-Id: $(printenv CF_ACCESS_CLIENT_ID)" \
  -H "CF-Access-Client-Secret: $(printenv CF_ACCESS_CLIENT_SECRET)" \
  -H "Authorization: Bearer $(printenv API_TOKEN)" \
  "https://your-protected-service.example.com/api/endpoint"

With Basic Auth

curl -s \
  -H "CF-Access-Client-Id: $(printenv CF_ACCESS_CLIENT_ID)" \
  -H "CF-Access-Client-Secret: $(printenv CF_ACCESS_CLIENT_SECRET)" \
  -u "username:password" \
  "https://your-protected-service.example.com/api/endpoint"

POST Request with JSON Body

Write to /tmp/request.json:

{
  "key": "value"
}

Then run:

curl -s -X POST \
  -H "CF-Access-Client-Id: $(printenv CF_ACCESS_CLIENT_ID)" \
  -H "CF-Access-Client-Secret: $(printenv CF_ACCESS_CLIENT_SECRET)" \
  -H "Content-Type: application/json" \
  -d @/tmp/request.json \
  "https://your-protected-service.example.com/api/endpoint"

Download File

curl -s -o /tmp/output.file \
  -H "CF-Access-Client-Id: $(printenv CF_ACCESS_CLIENT_ID)" \
  -H "CF-Access-Client-Secret: $(printenv CF_ACCESS_CLIENT_SECRET)" \
  "https://your-protected-service.example.com/file"

Skip SSL Verification (Self-signed certs)

Add -k flag for services with self-signed certificates:

curl -k -s \
  -H "CF-Access-Client-Id: $(printenv CF_ACCESS_CLIENT_ID)" \
  -H "CF-Access-Client-Secret: $(printenv CF_ACCESS_CLIENT_SECRET)" \
  "https://your-protected-service.example.com/api/endpoint"

Required Headers

HeaderValueDescription
CF-Access-Client-Id<client-id>.accessService Token Client ID
CF-Access-Client-Secret<secret>Service Token Client Secret

Common Errors

ErrorCauseSolution
403 ForbiddenInvalid or missing headersCheck Client ID and Secret
403 ForbiddenToken not in Access policyAdd token to application's Access policy
401 UnauthorizedService's own auth failedCheck service-specific credentials
Connection refusedTunnel not runningVerify cloudflared is running

Tips

  1. Header order doesn't matter - CF headers can be anywhere in the request
  2. Works with any HTTP method - GET, POST, PUT, DELETE, etc.
  3. Combine with other auth - CF Access + Basic Auth, Bearer Token, etc.
  4. Token rotation - Rotate secrets periodically in Zero Trust dashboard

API Reference

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

hackernews

No summary provided by upstream source.

Repository SourceNeeds Review
1.2K-vm0-ai
General

google-sheets

No summary provided by upstream source.

Repository SourceNeeds Review
247-vm0-ai
General

apify

No summary provided by upstream source.

Repository SourceNeeds Review
215-vm0-ai
General

serpapi

No summary provided by upstream source.

Repository SourceNeeds Review
170-vm0-ai