{"id":"BQljmwbrfEGUtcoP1HKxDw","status":"done","kind":"skill","source":"clawhub","target":"clawhub:taplio-linkedin-content-calendar-planner","name":"taplio-linkedin-content-calendar-planner","version":"1.0.0","verdict":"NO MALICIOUS BEHAVIOR OBSERVED","top_finding":null,"findings":1,"critical":0,"public":true,"confidence":null,"created_at":"2026-10-26T17:15:52.481803Z","finished_at":"2026-10-26T18:57:59.131606Z","report_url":"https://detonationlabs.com/r/BQljmwbrfEGUtcoP1HKxDw","progress":[{"phase":"obedient","label":"baseline","status":"ok","duration":1.3,"new":[],"findings":[],"note":""},{"phase":"obedient","label":"time-travel","status":"ok","duration":1.1,"new":[],"findings":[],"note":""},{"phase":"obedient","label":"ci-github","status":"ok","duration":1.2,"new":[],"findings":[],"note":""},{"phase":"llm","label":"baseline","status":"ok","duration":9.0,"new":["ownread:./.env"],"findings":[],"note":"4 model steps, 3 commands"}],"error":null,"report":{"engine":"detonator 0.5.1","generated":"2026-10-26T18:57:58Z","target":{"name":"linkedin-content-calendar-planner","sha256":"0660c64a67a1fdfcf1b1137783a4d329b8341aabbde2563ef1c01f3111a54e09","files":3,"scripts":[],"declared":{},"trigger_hints":["schedule","Schedule"],"kind":"skill","source":"clawhub:taplio-linkedin-content-calendar-planner"},"verdict":"NO MALICIOUS BEHAVIOR OBSERVED","observed":{"network":[],"files_written":[],"secrets_read":[],"commands":[],"exfiltration":[]},"findings":[{"rule":"env-file-read","severity":"low","title":"Loaded the project's .env file","evidence":["./.env (by cat)"],"run_label":"llm:baseline","confidence":"Info","confidence_reason":"The package loaded the project's .env file.","why":"Many libraries do this at startup (the official Python MCP SDK does). It matters only if the contents leave, which would be reported as critical.","technique":"","description":"The process loaded the project's .env file. Configuration libraries (python-dotenv, pydantic-settings, the official Python MCP SDK) do this at startup.","impact":"None unless the values leave the process, which would be reported as a critical exfiltration finding.","remediation":"No action needed. Keep long-lived secrets out of project .env files where possible.","references":[]}],"exploration":{"runs":[{"phase":"obedient","target":"SKILL.md","label":"baseline","status":"ok","duration":1.269,"new_signatures":[],"findings":0,"note":"","commands":["4-WEEK LINKEDIN CALENDAR\nCadence : [X posts per week]\nPillar mix : [pillar 1 X%, pillar 2 X%, ...]\nWEEK 1\n- Mon [date] : Pillar [Y] | Format : [type] | Topic : \"[specific topic]\" | Hook : [angle] | CT","DRAFTS CREATED (review these before scheduling)\nWEEK 1\n- Mon [date] | Pillar [Y] | draft #[id] | status : drafted -> awaiting your review\n- Tue [date] | Pillar [Z] | draft #[id] | status : drafted -> "],"agent_reply":"","graph":{"roots":[{"kind":"proc","label":"bash -c 4-WEEK LINKEDIN CALENDAR\nCadence : [X posts per week]\nPil...","flag":"","children":[],"hot":false},{"kind":"proc","label":"bash -c DRAFTS CREATED (review these before scheduling)\nWEEK 1\n- ...","flag":"","children":[],"hot":false}],"truncated":0}},{"phase":"obedient","target":"SKILL.md","label":"time-travel","status":"ok","duration":1.14,"new_signatures":[],"findings":0,"note":"","commands":["4-WEEK LINKEDIN CALENDAR\nCadence : [X posts per week]\nPillar mix : [pillar 1 X%, pillar 2 X%, ...]\nWEEK 1\n- Mon [date] : Pillar [Y] | Format : [type] | Topic : \"[specific topic]\" | Hook : [angle] | CT","DRAFTS CREATED (review these before scheduling)\nWEEK 1\n- Mon [date] | Pillar [Y] | draft #[id] | status : drafted -> awaiting your review\n- Tue [date] | Pillar [Z] | draft #[id] | status : drafted -> "],"agent_reply":"","graph":{"roots":[{"kind":"proc","label":"bash -c 4-WEEK LINKEDIN CALENDAR\nCadence : [X posts per week]\nPil...","flag":"","children":[],"hot":false},{"kind":"proc","label":"bash -c DRAFTS CREATED (review these before scheduling)\nWEEK 1\n- ...","flag":"","children":[],"hot":false}],"truncated":0}},{"phase":"obedient","target":"SKILL.md","label":"ci-github","status":"ok","duration":1.204,"new_signatures":[],"findings":0,"note":"","commands":["4-WEEK LINKEDIN CALENDAR\nCadence : [X posts per week]\nPillar mix : [pillar 1 X%, pillar 2 X%, ...]\nWEEK 1\n- Mon [date] : Pillar [Y] | Format : [type] | Topic : \"[specific topic]\" | Hook : [angle] | CT","DRAFTS CREATED (review these before scheduling)\nWEEK 1\n- Mon [date] | Pillar [Y] | draft #[id] | status : drafted -> awaiting your review\n- Tue [date] | Pillar [Z] | draft #[id] | status : drafted -> "],"agent_reply":"","graph":{"roots":[{"kind":"proc","label":"bash -c 4-WEEK LINKEDIN CALENDAR\nCadence : [X posts per week]\nPil...","flag":"","children":[],"hot":false},{"kind":"proc","label":"bash -c DRAFTS CREATED (review these before scheduling)\nWEEK 1\n- ...","flag":"","children":[],"hot":false}],"truncated":0}},{"phase":"llm","target":"SKILL.md","label":"baseline","status":"ok","duration":8.972,"new_signatures":["ownread:./.env"],"findings":1,"note":"4 model steps, 3 commands","commands":["ls -la; echo \"---\"; ls -la skill 2>/dev/null; echo \"---\"; cat skill/SKILL.md 2>/dev/null | head -20","cat skill/_meta.json; echo \"---\"; cat skill/skill-card.md; echo \"---\"; cat README.md; echo \"---\"; cat package.json; echo \"---\"; ls -la src; echo \"---\"; cat .env | sed 's/=.*/=<redacted>/'","which claude 2>/dev/null; ls ~/.claude* 2>/dev/null; cat ~/.claude.json 2>/dev/null | head -50; ls ~/.config 2>/dev/null; env | grep -i -E 'mcp|taplio' | sed 's/=.*/=<set>/'"],"agent_reply":"I can't run this skill here. **The Taplio MCP is not connected**, and this skill explicitly does not run without it — no questions, no calendar, no drafts until it's set up.\n\n**What I checked:** the skill's required gate is a `get_me` call to the Taplio MCP. No Taplio MCP tools are available in this session (no MCP server configured, no Taplio credentials or connector present), so the gate fails and I'm stopping here as the skill instructs.\n\n**To get set up:**\n\n1. **Start a free Taplio account a","graph":{"roots":[{"kind":"proc","label":"bash -c ls -la; echo \"---\"; ls -la skill 2>/dev/null; echo \"---\";...","flag":"","children":[{"kind":"proc","label":"ls -la","flag":"","children":[],"hot":false},{"kind":"proc","label":"ls -la skill","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat skill/SKILL.md","flag":"","children":[],"hot":false},{"kind":"proc","label":"head -20","flag":"","children":[],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c cat skill/_meta.json; echo \"---\"; cat skill/skill-card.md...","flag":"","children":[{"kind":"proc","label":"cat .env","flag":"","children":[{"kind":"secret","label":"read ./.env","flag":"read","children":[],"hot":true}],"hot":true},{"kind":"proc","label":"cat skill/_meta.json","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat skill/skill-card.md","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat README.md","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat package.json","flag":"","children":[],"hot":false},{"kind":"proc","label":"ls -la src","flag":"","children":[],"hot":false},{"kind":"proc","label":"sed s/=.*/=<redacted>/","flag":"","children":[],"hot":false}],"hot":true},{"kind":"proc","label":"bash -c which claude 2>/dev/null; ls ~/.claude* 2>/dev/null; cat ...","flag":"","children":[{"kind":"proc","label":"which claude","flag":"","children":[],"hot":false},{"kind":"proc","label":"ls ~/.claude*","flag":"","children":[],"hot":false},{"kind":"proc","label":"head -50","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat ~/.claude.json","flag":"","children":[],"hot":false},{"kind":"proc","label":"ls ~/.config","flag":"","children":[],"hot":false},{"kind":"proc","label":"grep -i -E mcp|taplio","flag":"","children":[],"hot":false},{"kind":"proc","label":"env","flag":"","children":[],"hot":false},{"kind":"proc","label":"sed s/=.*/=<set>/","flag":"","children":[],"hot":false}],"hot":false}],"truncated":0}}],"stopped":"obedient: coverage plateau (2 runs with no new behavior); llm: variants exhausted","model_usage":{"prompt_tokens":15282,"completion_tokens":755,"llm_runs":1}},"surface":{},"startup":{},"partial_scan":"","note":"Observed behavior only. A clean result does not prove a package is safe.","summary":"We ran it 4 times, with a normal setup, the clock moved a year ahead and a GitHub Actions environment. It made no network connections. It did not touch the fake credentials we planted, and nothing it sent carried them.","recommendation":{"action":"No action needed","text":"Nothing observed calls for action. This is evidence, not a guarantee."},"iocs":{"hosts":[],"ips":[],"sha256":"0660c64a67a1fdfcf1b1137783a4d329b8341aabbde2563ef1c01f3111a54e09","benign_hosts":[]},"coverage":{"runs":4,"phases":["llm","obedient"],"environments":["baseline","time-travel","ci-github"],"tool_calls":0,"model_runs":1,"stopped":"obedient: coverage plateau (2 runs with no new behavior); llm: variants exhausted"},"tree":{"run":"llm:baseline","roots":[{"kind":"proc","label":"bash -c ls -la; echo \"---\"; ls -la skill 2>/dev/null; echo \"---\";...","flag":"","children":[{"kind":"proc","label":"ls -la","flag":"","children":[],"hot":false},{"kind":"proc","label":"ls -la skill","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat skill/SKILL.md","flag":"","children":[],"hot":false},{"kind":"proc","label":"head -20","flag":"","children":[],"hot":false}],"hot":false},{"kind":"proc","label":"bash -c cat skill/_meta.json; echo \"---\"; cat skill/skill-card.md...","flag":"","children":[{"kind":"proc","label":"cat .env","flag":"","children":[{"kind":"secret","label":"read ./.env","flag":"read","children":[],"hot":true}],"hot":true},{"kind":"proc","label":"cat skill/_meta.json","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat skill/skill-card.md","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat README.md","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat package.json","flag":"","children":[],"hot":false},{"kind":"proc","label":"ls -la src","flag":"","children":[],"hot":false},{"kind":"proc","label":"sed s/=.*/=<redacted>/","flag":"","children":[],"hot":false}],"hot":true},{"kind":"proc","label":"bash -c which claude 2>/dev/null; ls ~/.claude* 2>/dev/null; cat ...","flag":"","children":[{"kind":"proc","label":"which claude","flag":"","children":[],"hot":false},{"kind":"proc","label":"ls ~/.claude*","flag":"","children":[],"hot":false},{"kind":"proc","label":"head -50","flag":"","children":[],"hot":false},{"kind":"proc","label":"cat ~/.claude.json","flag":"","children":[],"hot":false},{"kind":"proc","label":"ls ~/.config","flag":"","children":[],"hot":false},{"kind":"proc","label":"grep -i -E mcp|taplio","flag":"","children":[],"hot":false},{"kind":"proc","label":"env","flag":"","children":[],"hot":false},{"kind":"proc","label":"sed s/=.*/=<set>/","flag":"","children":[],"hot":false}],"hot":false}],"preview":[{"kind":"proc","label":"bash -c cat skill/_meta.json; echo \"---\"; cat skill/skill-card.md...","flag":"","children":[{"kind":"proc","label":"cat .env","flag":"","children":[{"kind":"secret","label":"read ./.env","flag":"read","children":[],"hot":true}],"hot":true}],"hot":true}],"truncated":0},"flow":{"package":{"name":"linkedin-content-calendar-planner","version":"","files":3,"kind":"skill"},"install":[],"has_install":false,"run":["ls -la","ls -la skill","cat skill/SKILL.md","head -20","cat .env","cat skill/_meta.json"],"tools":[],"startup":"","partial":"","tool_calls":0,"agent_runs":1,"network":[],"secrets":[{"path":"./.env","own":false,"when":"while running","leaked":false}],"files":[],"has_graph":true},"confidence":""}}