Back to skill

Security audit

Atlassian Cloud APIs + CLIs

Security checks for vulnerabilities and agentic risk

Overview

The skill is coherent and purpose-aligned for Atlassian automation, but it teaches high-impact admin/API workflows with credential examples that can expose tokens in shell history, logs, or URLs.

Review before installing. Use this only with least-privilege Atlassian credentials, prefer OAuth or first-party CLI login where possible, avoid pasting real tokens directly into shell commands or URLs, and verify any CLI downloads or npm installs instead of relying blindly on latest. Treat Cloud Admin, Statuspage, Opsgenie, Jira, Bitbucket, Trello, and Confluence writes as high-impact and require explicit target review before mutation.

Vulnerability Patterns
  • Insecure DependenciesIntroduces malicious components through unsafe dependency sources
  • Insecure Skill Coding PracticesFinds exploitable flaws such as hardcoded secrets or command injection
  • Skill Instruction HijackingAlters the agent's session goals or safety constraints when the skill loads
  • Agent Memory PoisoningWrites attacker-controlled rules into memory that affect later sessions
  • Remote Payload Retrieval and ExecutionFetches external code whose behavior can change after review
Findings (2)

T08 · Insecure Dependencies

Warning
Location
auth-and-clis.md:29
Finding
Mutable and Unverified CLI Dependencies Can Execute Unreviewed Code<![CDATA[ ## Vulnerability Details **File Location**: `auth-and-clis.md:29-34` and `auth-and-clis.md:61-64` **Vulnerability Type**: T08: Insecure Dependencies **Risk Level**: Medium ### Vulnerable Code `auth-and-clis.md:29-34`: ```bash Alternative binary install: ```bash curl -LO "https://acli.atlassian.com/darwin/latest/acli_darwin_arm64/acli" chmod +x ./acli ./acli --help ``` ``` `auth-and-clis.md:61-64`: ```bash Install and login: ```bash npm i -g @forge/cli@latest forge login ``` ``` ### Technical Analysis Both installation methods rely on mutable `latest` references. The ACLI instructions download a binary, grant it execute permission, and run it without validating a cryptographic checksum or digital signature. The Forge instructions install the mutable `@latest` package globally without pinning a reviewed version. Consequently, the code installed at audit time is not guaranteed to be the code installed when a user follows these instructions. Although both dependencies are obtained from apparently official distribution channels, compromise of an upstream release, package-publishing account, registry, download endpoint, or associated trust infrastructure could substitute attacker-controlled executable content. The global npm installation also places the Forge executable in a system-wide user tool location, increasing the likelihood that a compromised version will continue to be invoked in later sessions. ### Attack Path 1. An attacker compromises the ACLI distribution endpoint, Forge npm publishing account, upstream build process, or a release referenced by `latest`. 2. The mutable URL or npm tag is changed to resolve to an attacker-controlled artifact. 3. A user follows the Skill instructions. 4. For ACLI, the user downloads the artifact, marks it executable, and runs it without integrity verification. 5. For Forge, npm installs the compromised package globally and may execute package lifecycle scripts during installation. 6. The malicious depen ...[truncated 925 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Replace `/latest/` and `@latest` with exact, reviewed version numbers. 2. Publish the expected SHA-256 checksum for every downloaded binary. 3. Verify the checksum before granting execute permission or running the binary. 4. Where Atlassian provides signed releases, verify the release signature against a documented and trusted signing key. 5. Use installation commands that fail closed if verification fails. 6. Avoid global npm installation where practical. Prefer a project-local, version-pinned dependency with a lockfile. 7. Review npm lifecycle scripts before installation and consider disabling them during initial package retrieval where operationally feasible. 8. Document an explicit upgrade process so new versions are reviewed and their hashes updated rather than silently selected through a mutable tag. A hardened binary workflow should follow this pattern: ```bash ACLI_VERSION="<reviewed-version>" curl -fL -o acli "https://<official-versioned-path>/${ACLI_VERSION}/acli" printf '%s %s\n' "<published-sha256>" "acli" | shasum -a 256 --check - chmod 700 ./acli ./acli --version ``` The exact versioned URL, checksum, and signature procedure must come from verified Atlassian release documentation. ]]>

T09 · Insecure Skill Coding Practices

Warning
Location
jira-suite.md:15
Finding
API Credentials Are Placed in Shell Arguments and Request URLs<![CDATA[ ## Vulnerability Details **File Locations**: - `jira-suite.md:15-17` - `jira-suite.md:32-34` - `jira-suite.md:49-51` - `content-dev-collab.md:15-17` - `content-dev-collab.md:37-39` - `content-dev-collab.md:57` - `admin-ops.md:18-20` - `admin-ops.md:56-58` **Vulnerability Type**: T09: Insecure Skill Coding Practices **Risk Level**: Medium ### Vulnerable Code `jira-suite.md:15-17`: ```bash curl -s "https://<site>.atlassian.net/rest/api/3/search?jql=project=TEAM&maxResults=50" \ -u "<email>:<api_token>" \ -H "Accept: application/json" ``` `jira-suite.md:32-34`: ```bash curl -s "https://<site>.atlassian.net/rest/agile/1.0/board/<board_id>/sprint" \ -u "<email>:<api_token>" \ -H "Accept: application/json" ``` `jira-suite.md:49-51`: ```bash curl -s "https://<site>.atlassian.net/rest/servicedeskapi/request" \ -u "<email>:<api_token>" \ -H "Accept: application/json" ``` `content-dev-collab.md:15-17`: ```bash curl -s "https://<site>.atlassian.net/wiki/api/v2/pages?limit=25" \ -u "<email>:<api_token>" \ -H "Accept: application/json" ``` `content-dev-collab.md:37-39`: ```bash curl -s "https://api.bitbucket.org/2.0/repositories/<workspace>/<repo>/pullrequests" \ -H "Authorization: Bearer <bitbucket_token>" ``` `content-dev-collab.md:57`: ```bash curl -s "https://api.trello.com/1/boards/<board_id>/cards?key=<trello_key>&token=<trello_token>" ``` `admin-ops.md:18-20`: ```bash curl -s "https://api.atlassian.com/admin/v2/orgs/<org_id>/users/invite" \ -H "Authorization: Bearer <admin_api_key>" \ -H "Content-Type: application/json" ``` `admin-ops.md:56-58`: ```bash curl -s "https://api.statuspage.io/v1/pages/<page_id>/incidents" \ -H "Authorization: OAuth <statuspage_api_key>" ``` ### Technical Analysis The examples instruct users to substitute credentials directly into command-line arguments. Depending on the operating system, shell, execution environment, and monitoring configuration, those arguments may be exposed through: ...[truncated 2333 chars]
Remediation
<![CDATA[ ## Remediation Suggestions 1. Do not instruct users to type raw tokens directly into interactive command lines. 2. Prefer OAuth browser-based login or first-party CLI authentication flows where available. 3. Retrieve credentials from an operating-system credential manager or dedicated secret-management service. 4. For curl automation, use a protected configuration file with permissions limited to the current user rather than embedding credentials in the command. 5. If environment variables are unavoidable, populate them through a secure secret-injection mechanism and ensure commands, debug output, and environment dumps are not logged. 6. Disable command echoing in CI/CD jobs before retrieving or using secrets. 7. Ensure scripts never run with `set -x` while handling credentials. 8. Redact authorization headers and URL query parameters from application, proxy, agent, and audit logs. 9. Where Trello requires query-string authentication, construct and execute the request in a non-logged context and configure all intermediary logging systems to remove `key` and `token` parameters. 10. Use narrowly scoped tokens, apply least privilege, set expiration where supported, and rotate any credential that may have appeared in history or logs. 11. Add explicit warnings explaining that placeholders must not be replaced in commands that will be saved to shell history or execution transcripts. A safer curl configuration pattern is: ```bash umask 077 cat > "$HOME/.atlassian-curl.conf" <<'EOF' user = "<email>:<api_token>" header = "Accept: application/json" EOF curl --config "$HOME/.atlassian-curl.conf" \ "https://<site>.atlassian.net/rest/api/3/search?jql=project=TEAM&maxResults=50" ``` The configuration file must be protected with mode `600`, excluded from source control and backups where appropriate, and deleted when no longer required. A managed secret store is preferable to persistent plaintext configuration. ]]>
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
  • Excessive AgencyUnrestricted Tool Access, Autonomous Decision Making, Scope Creep
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
Findings (35)

Credential Access

High
Category
Privilege Escalation
Content
### 2. Ask for only the credential family the chosen surface needs
- Jira, Confluence, GraphQL, and Forge commonly use API token plus email, OAuth 2.0, or Forge auth.
- Bitbucket uses access tokens, app passwords, or OAuth.
- Trello uses key plus token, Statuspage uses an API token, Opsgenie uses an API key, and Cloud Admin uses an admin API key.

### 3. Prefer first-party surfaces before partner CLIs
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
| Surface | Typical auth | Notes |
|--------|---------------|-------|
| Jira, Confluence, GraphQL | API token + email, OAuth 2.0, or Forge auth | Good default for tenant automation |
| Bitbucket | Access token, app password, or OAuth 2.0 | Different host and scopes from Jira/Confluence |
| Trello | Key + token | Usually passed as query params |
| Cloud Admin | Admin API key | Org-wide and higher risk |
| Compass | API token, OAuth 2.0, or Forge | Often combined with GraphQL |
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Missing User Warnings

High
Confidence
97% confidence
Finding
The Trello example places the API key and token in the URL query string, which is especially risky because URLs are commonly logged by proxies, browsers, monitoring tools, and server access logs. The surrounding note that Trello auth typically lives in query params explains the API convention, but without an explicit warning it still teaches a high-leakage pattern.

Credential Access

High
Category
Privilege Escalation
Content
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Credential Access

High
Category
Privilege Escalation
Content
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |
Confidence
70% confidence
Finding
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
## Common Traps

- Using Jira Platform endpoints for boards or sprints -> use Jira Software `/rest/agile/1.0`.
- Sending plain text into Jira rich fields without checking ADF support -> malformed descriptions or comments.
- Forgetting `/wiki` in Confluence Cloud URLs -> wrong host or 404.
- Assuming `acli` covers every Atlassian product -> today it is mostly Jira, Admin, and Rovo Dev.
- Mixing Bitbucket auth with Atlassian tenant auth -> valid token, wrong endpoint family.
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

Autonomous Decision Making

Medium
Category
Excessive Agency
Content
## Common Traps

- Using Jira Platform endpoints for boards or sprints -> use Jira Software `/rest/agile/1.0`.
- Sending plain text into Jira rich fields without checking ADF support -> malformed descriptions or comments.
- Forgetting `/wiki` in Confluence Cloud URLs -> wrong host or 404.
- Assuming `acli` covers every Atlassian product -> today it is mostly Jira, Admin, and Rovo Dev.
- Mixing Bitbucket auth with Atlassian tenant auth -> valid token, wrong endpoint family.
Confidence
75% confidence
Finding
Skill enables autonomous high-impact decisions without human-in-the-loop verification. Critical operations (destructive commands, financial transactions, data deletion) should require explicit user confirmation.

External Transmission

Medium
Category
Data Exfiltration
Content
| `https://{site}.atlassian.net/wiki/api/v2/*` | Confluence page, space, comment, label, attachment metadata | Confluence Cloud |
| `https://api.atlassian.com/admin/*`, `https://api.atlassian.com/graphql`, and product GraphQL gateways | Organization, policy, graph, Compass, and app payloads | Cloud Admin, GraphQL, and Compass |
| `https://api.bitbucket.org/2.0/*` and `https://api.trello.com/1/*` | Repository, pull request, pipeline, board, list, card, and webhook data | Bitbucket Cloud and Trello |
| `https://api.statuspage.io/v1/*`, `https://api.opsgenie.com/*`, and `https://api.eu.opsgenie.com/*` | Incident, component, metric, alert, schedule, and on-call payloads | Statuspage and Opsgenie |

No other first-party Atlassian endpoints are targeted by default. If the user chooses a partner CLI, review that tool's own endpoints before using it.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| `https://{site}.atlassian.net/wiki/api/v2/*` | Confluence page, space, comment, label, attachment metadata | Confluence Cloud |
| `https://api.atlassian.com/admin/*`, `https://api.atlassian.com/graphql`, and product GraphQL gateways | Organization, policy, graph, Compass, and app payloads | Cloud Admin, GraphQL, and Compass |
| `https://api.bitbucket.org/2.0/*` and `https://api.trello.com/1/*` | Repository, pull request, pipeline, board, list, card, and webhook data | Bitbucket Cloud and Trello |
| `https://api.statuspage.io/v1/*`, `https://api.opsgenie.com/*`, and `https://api.eu.opsgenie.com/*` | Incident, component, metric, alert, schedule, and on-call payloads | Statuspage and Opsgenie |

No other first-party Atlassian endpoints are targeted by default. If the user chooses a partner CLI, review that tool's own endpoints before using it.
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
## Cloud Admin REST APIs

Base URL:
`https://api.atlassian.com/admin`

Families:
- organizations
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Missing User Warnings

Medium
Confidence
92% confidence
Finding
The Confluence example demonstrates inline basic-auth style credentials in a curl command without any warning about shell history, process listing, or accidental copy/paste into logs. While the placeholders are not real secrets, this normalizes unsafe credential handling and may lead users to expose API tokens in terminals, scripts, or screenshots.

Missing User Warnings

Medium
Confidence
89% confidence
Finding
The Bitbucket example uses a bearer token directly in the Authorization header example without any surrounding guidance on secret handling. Even with a placeholder token, the pattern can encourage users to embed live tokens in shell commands that may be captured by history, CI logs, or shared documentation.

Missing User Warnings

Medium
Confidence
90% confidence
Finding
The JSM example queries the request endpoint, which can involve customer and support data, yet the markdown provides no warning about handling potentially sensitive ticket contents or personal data. For markdown skills, behaviors affecting user data or privacy should be explicitly disclosed.

Vague Triggers

Medium
Confidence
85% confidence
Finding
The phrase 'Keep collecting defaults opportunistically' encourages ongoing, loosely scoped memory gathering without a clear minimization boundary. In a skill that handles enterprise SaaS environments, this can lead to over-collection of tenant details, IDs, operational preferences, or other sensitive contextual data beyond what the user explicitly intended to persist.

External Transmission

Medium
Category
Data Exfiltration
Content
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

External Transmission

Medium
Category
Data Exfiltration
Content
| Jira Software | `https://{site}.atlassian.net/rest/agile/1.0` | Same as Jira Platform | `acli jira` for many Jira workflows | Boards, sprints, backlog, epics |
| Jira Service Management | `https://{site}.atlassian.net/rest/servicedeskapi` | API token + email or OAuth 2.0 | No dedicated first-party product CLI | Requests, customers, queues, organizations |
| Confluence Cloud | `https://{site}.atlassian.net/wiki/api/v2` | API token + email, OAuth 2.0, Forge | API first | Pages, spaces, comments, labels, attachments |
| Bitbucket Cloud | `https://api.bitbucket.org/2.0` | Access tokens, app passwords, OAuth 2.0 | API first | Repositories, pull requests, pipelines, workspaces |
| Trello | `https://api.trello.com/1` | Key + token | API first | Boards, lists, cards, checklists, webhooks |
| Cloud Admin | `https://api.atlassian.com/admin` | Admin API key | `acli admin` | Orgs, users, groups, policies, API access |
| Compass | `https://api.atlassian.com/compass/cloud/{cloudId}` and GraphQL | API token, OAuth 2.0, Forge | `forge` for app workflows | Components, scorecards, events, metrics |
Confidence
50% confidence
Finding
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Static analysis

No suspicious patterns detected.