Incomplete referenced artifact analysis
- Category
- analysis-evasion
- Confidence
- 100% confidence
- Finding
Referenced artifact was not completely inspected
- Content
md 2. Check: `node scripts/calendar.mjs --status --file calendar.json`. Report entries that
Security audit
Security checks for vulnerabilities and agentic risk
This social-post scheduler needs review because it can publish changed content after approval checks and publish the same approved post twice.
Use status and dry-run modes while the publishing safeguards are corrected. Before enabling unattended posting, require publication from an approval-verified immutable snapshot and protection against duplicate entries and overlapping runs. Limit connected accounts and token permissions. All three bundled files were inspected, but separate approval/authentication components and live provider behavior were not verified.
Referenced artifact was not completely inspected
2. Check: `node scripts/calendar.mjs --status --file calendar.json`. Report entries that
Referenced artifact was not completely inspected
3. Preview what is due: `node scripts/calendar.mjs --publish-due --dry-run --file calendar.json`
Referenced artifact was not completely inspected
4. Publish due posts: `node scripts/calendar.mjs --publish-due --file calendar.json`.
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
function defaultHint(error) {
switch (error.code) {
case 190:
return "The access token is expired or invalid. Re-run the auth script for this platform.";
case 4:
case 17:
case 32:
Code accesses credential files (SSH keys, AWS credentials, etc.). This could indicate credential theft attempts.
onError: (status, body) => new PlatformError(
`MASTODON_${status}`,
String(body.error ?? `Mastodon API error ${status}`),
status === 401 || status === 403 ? "The access token is invalid or lacks write:statuses / write:media." : void 0
)
});
}
Approval hashes are checked while building the reports, but publication later re-reads post.json and uploads media without checking those bytes against the approval again. An actor or process able to modify a post folder during that interval could substitute unapproved content, media, or destination options and have it published using the user's credentials; inspecting all entries first and waiting for earlier publications can substantially widen this interval.
Without declared permissions the skill's intent is opaque and cannot be validated.
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.
## Failure handling
- `needs-approval`: list the problems (changed files or no approval) and ask the user.
- One entry failing does not stop the others; report each failure with its hint.
- Instagram and Threads have no API scheduling: they publish when `--publish-due` runs
after their time, so the command must actually be run.
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
return v;
}
function apiBase(env) {
return env[PIN_ENV.sandbox] === "1" ? "https://api-sandbox.pinterest.com/v5" : "https://api.pinterest.com/v5";
}
function basic(env) {
return {
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
"pinterest",
async (t) => toToken2(
await postForm(
"https://api.pinterest.com/v5/oauth/token",
{ grant_type: "refresh_token", refresh_token: t.refreshToken },
basic(env)
),
Data is being sent to an external URL. This could be legitimate telemetry or data exfiltration. Manual review is recommended.
async function call(token, method, body, fetchImpl) {
const isForm = body instanceof FormData;
const res = await fetchWithRetry(
`https://api.telegram.org/bot${token}/${method}`,
{
method: "POST",
body: isForm ? body : JSON.stringify(body),