Back to skill

Security audit

postfast

Security checks for vulnerabilities and agentic risk

Overview

This skill is a disclosed PostFast API guide for managing social media posts, with high-impact actions like posting, deleting, and comment moderation that users should confirm carefully.

Install only if you trust PostFast with the connected social accounts and API key. Confirm any action that publishes, replies, hides, deletes, bulk-deletes, or sends a connect link, and review exact targets and filters before approving destructive operations.

Vulnerability Patterns
  • 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
  • Embedded Malicious CodeShips malicious scripts inside the skill and executes them locally
  • Unauthorized Access and Privilege EscalationObtains permissions beyond the task's legitimate needs
Vulnerability Patterns
  • Data ExfiltrationExternal Transmission, Env Variable Harvesting, File System Enumeration
  • Tool MisuseTool Parameter Abuse, Chaining Abuse, Unsafe Defaults
  • Trigger AbuseOverly Broad Trigger, Shadow Command Trigger, Keyword Baiting Trigger
  • Prompt InjectionInstruction Override, Hidden Instructions, Exfiltration Commands
  • Privilege EscalationExcessive Permissions, Sudo/Root Execution, Credential Access
Findings (45)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 155)May include surrounding context.

-d '{ "ids": ["POST_ID_1", "POST_ID_2"] }'

text

Returns `200` (not 201) with `{ "deletedIds": [...], "notFoundIds": [...] }`. `notFoundIds` holds ids that don't exist or belong to another workspace; a repeated id is reported once, and repeating the same call is harmless. `ids` takes 1-100 UUIDs: `[]` returns `400` "At least one id is required", more than 100 returns `400` "ids cannot exceed 100 entries", a non-UUID returns `400` "Each id must be a valid UUID". One call counts as one request against this endpoint's own limit, separate from `DELETE /social-posts/:id`.

**Delete everything that matches a filter** (for example every scheduled post on one account, after the user confirmed): don't advance `page` while deleting, because later posts shift onto pages you have already read and get skipped. Instead repeat: read `GET /social-posts?socialMediaIds=ACCOUNT_ID&statuses=SCHEDULED&page=0&limit=50`, send the returned ids to `POST /social-posts/bulk-delete`, and stop when `data` comes back empty. Stop on any error too; after a `429`, wait `Retry-After` seconds, then run the loop again.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 640)May include surrounding context.

md
|---|---|
| `POST /social-posts` (up to 15 posts per call) | 180/minute, 420/day |
| `GET /social-posts` | 720/hour, 7,200/day |
| `DELETE /social-posts/:id` | 200/hour |
| `POST /social-posts/bulk-delete` (up to 100 ids per call) | 200/hour |
| `GET /social-posts/analytics` | 1,260/hour, 12,600/day |
| `POST /file/get-signed-upload-urls` | 180/minute, 420/day |

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 656)May include surrounding context.

md
|---|---|
| `POST /social-posts` (up to 15 posts per call) | 180/minute, 420/day |
| `GET /social-posts` | 720/hour, 7,200/day |
| `DELETE /social-posts/:id` | 200/hour |
| `POST /social-posts/bulk-delete` (up to 100 ids per call) | 200/hour |
| `GET /social-posts/analytics` | 1,260/hour, 12,600/day |
| `POST /file/get-signed-upload-urls` | 180/minute, 420/day |

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 725)May include surrounding context.

md
|---|---|
| `POST /social-posts` (up to 15 posts per call) | 180/minute, 420/day |
| `GET /social-posts` | 720/hour, 7,200/day |
| `DELETE /social-posts/:id` | 200/hour |
| `POST /social-posts/bulk-delete` (up to 100 ids per call) | 200/hour |
| `GET /social-posts/analytics` | 1,260/hour, 12,600/day |
| `POST /file/get-signed-upload-urls` | 180/minute, 420/day |

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
80% confidence
Finding

Tool parameters are crafted to achieve unintended or unsafe behavior. Parameter abuse can bypass intended safety checks (e.g. shell=True, --force, dangerous glob patterns).

Content

Scanner excerpt · SKILL.md (reported line 840)May include surrounding context.

md
GET /social-posts?ids=POST_ID_1,POST_ID_2

# Delete posts (PostFast only: a published post stays live on the platform)
DELETE /social-posts/:id                            -> { deleted: true | false }
POST   /social-posts/bulk-delete  { ids: [1-100] }  -> { deletedIds, notFoundIds }

# Upload media (3 steps)

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
83% confidence
Finding

The skill exposes a destructive delete capability for any post status and the documentation does not pair it with strong guardrails such as mandatory confirmation, pre-deletion lookup, or scope validation. In an agent setting, this increases the chance that ambiguous, injected, or mistaken inputs could trigger unauthorized deletion of user-managed content within the workspace.

Content

Scanner excerpt · references/api-reference.md (reported line 381)May include surrounding context.

md
| YouTube post with a caption key but no `youtubeLanguage` | `youtubeCaptionKey.languageRequired` |
| Unknown `youtubeLanguage` code on a YouTube post | `youtubeLanguage.invalid` |

### DELETE /social-posts/:id

Delete one post, in any status. Rate limit: 200/hour.

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
90% confidence
Finding

Bulk deletion of up to 100 posts per call materially increases the blast radius of parameter abuse in an agent workflow. If an attacker can influence filters, IDs, or prompt interpretation, the agent could remove large sets of scheduled or draft posts from the workspace without adequate user awareness, causing significant operational disruption.

Content

Scanner excerpt · references/api-reference.md (reported line 395)May include surrounding context.

POST /social-posts/bulk-delete

Delete up to 100 posts in one request. Rate limit: 200/hour (its own budget, separate from DELETE /social-posts/:id); one call counts as one request.

Request:

json

Tool Parameter Abuse

High
Category
Tool Misuse
Confidence
94% confidence
Finding

The guidance to repeatedly read page 0 and continue bulk-deleting until empty is effectively a recipe for mass deletion. In an autonomous or semi-autonomous agent context, this creates a dangerous amplification pattern where a single mistaken filter or manipulated instruction can erase all matching posts in the workspace.

Content

Scanner excerpt · references/api-reference.md (reported line 409)May include surrounding context.

md
- `ids` is required: 1-100 post UUIDs, each a UUID v4. `[]` returns `400` "At least one id is required", more than 100 returns `400` "ids cannot exceed 100 entries", a non-UUID returns `400` "Each id must be a valid UUID".
- `notFoundIds` holds the ids that don't exist or belong to another workspace (both get the same answer). A repeated id is reported once, and repeating a call with the same ids is harmless (they all come back in `notFoundIds`).
- Deletes the same way as `DELETE /social-posts/:id`: any status, PostFast only, published posts stay live on the platform.
- **Delete everything that matches a filter:** re-read `GET /social-posts` at `page=0` with the same filter and bulk-delete what it returns until it comes back empty. Stop on any error, including a `429`; wait `Retry-After` seconds and continue.

### GET /social-posts/analytics

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 32)May include surrounding context.

1. List connected accounts

bash
curl -s -H "pf-api-key: $POSTFAST_API_KEY" https://api.postfa.st/social-media/my-social-accounts

Returns array of { id, platform, platformUsername, displayName, connectionStatus, disabledReason, inboxCapable, followerCount?, followerCountUpdatedAt? }. Save the id (the socialMediaId required for every post).

External Transmission

Medium
Category
Data Exfiltration
Confidence
84% confidence
Finding

The connect-link endpoint creates a bearer-style onboarding URL that lets whoever opens it attach social accounts to the workspace. Because the skill explicitly notes that the URL should be treated like a credential, accidental disclosure by an agent or unsafe sharing behavior could grant unauthorized account-linking capability to third parties.

Content

Scanner excerpt · SKILL.md (reported line 168)May include surrounding context.

Let clients connect their social accounts to your workspace without creating a PostFast account:

bash
curl -X POST https://api.postfa.st/social-media/connect-link \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
60% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 219)May include surrounding context.

PostFast draft (recommended for "save now, schedule later"):

bash
curl -X POST https://api.postfa.st/social-posts \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
91% confidence
Finding

This markdown file includes an example for POST /social-posts/bulk-delete and explains its usage, but it does not warn that the operation can remove up to 100 posts and may be irreversible or impactful to user data. For markdown files, destructive behaviors should be disclosed so users understand the risk before using the example.

Content

No source excerpt is available for this finding.

Vague Triggers

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

The note explicitly advises looping bulk-delete calls until no matching posts remain, which can enable large-scale destructive actions from a broad or mistaken filter. Even though the file says to confirm with the user before sending and limits each call to 100 IDs, the provided workflow still operationalizes mass deletion with little friction and increases the chance of unintended data loss.

Content

No source excerpt is available for this finding.

Natural-Language Policy Violations

Medium
Category
Not specified by scanner
Confidence
94% confidence
Finding

The file includes natural-language content stating captions are available in English and also hard-codes the YouTube language to "en". Because no user opt-in, language selection, or justification for restricting locale is present, this appears to violate the language/locale policy requirement.

Content

No source excerpt is available for this finding.

Missing User Warnings

Medium
Category
Not specified by scanner
Confidence
92% confidence
Finding

This markdown documents a bulk deletion endpoint and even provides instructions for deleting everything matching a filter, but it does not include any explicit warning about irreversible removal of posts, schedules, analytics, or associated media. Because this is a destructive operation described in user-facing documentation, the file should clearly warn users before they automate or invoke mass deletion.

Content

No source excerpt is available for this finding.

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 32)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 53)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 73)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 89)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 108)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 141)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 149)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 219)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 237)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

External Transmission

Medium
Category
Data Exfiltration
Confidence
50% confidence
Finding

Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.

Content

Scanner excerpt · SKILL.md (reported line 284)May include surrounding context.

Step 1: Get Signed Upload URLs

bash
curl -X POST https://api.postfa.st/file/get-signed-upload-urls \
  -H "pf-api-key: $POSTFAST_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{

Static analysis

No suspicious patterns detected.