extract 0 0 0

osunlp/SkillHarm

published by @osunlp

Alignment dataset tracked in the /datasets sub-catalog.

Lifetime downloads
17K
Last 30 days
10.7K
Likes
1
Size
8.0 GB
Created on HF
2026-06-01
Age
4 months ago

Description

SkillHarm

Lifecycle-Aware Skill-Based Attacks via Automated Construction

📄 Paper · 🌐 Project Page · 💻 GitHub · 🤗 Data

Agent skills occupy a privileged position in the agent workflow — agents are expected to implicitly follow and execute them — which makes third-party skills a vulnerable supply-chain attack surface. SkillHarm is a benchmark of skill-based attacks across the skill-use lifecycle, paired with a systematic taxonomy of 12 skill-relevant risks. Every attack is… See the full description on the dataset page: https://huggingface.co/datasets/osunlp/SkillHarm.

Tags

task_categories:otherlanguage:enlicense:cc-by-4.0size_categories:n<1Kformat:jsonmodality:textlibrary:datasetslibrary:pandaslibrary:polarslibrary:mlcroissantarxiv:2606.02540region:usai-safetyagent-securityprompt-injectionskill-based-attacksred-teamingllm-agents

README current version from Hugging Face


language:

  • en
    license: cc-by-4.0
    size_categories:
  • n<1K
    task_categories:
  • other
    pretty_name: SkillHarm
    tags:
  • ai-safety
  • agent-security
  • prompt-injection
  • skill-based-attacks
  • red-teaming
  • llm-agents
    configs:
  • config_name: fpp
    data_files: fpp_index.jsonl
  • config_name: smp
    data_files: smp_index.jsonl

SkillHarm

Lifecycle-Aware Skill-Based Attacks via Automated Construction

📄 Paper · 🌐 Project Page · 💻 GitHub · 🤗 Data

Agent skills occupy a privileged position in the agent workflow — agents are expected to implicitly follow and execute them — which makes third-party skills a vulnerable supply-chain attack surface. SkillHarm is a benchmark of skill-based attacks across the skill-use lifecycle, paired with a systematic taxonomy of 12 skill-relevant risks. Every attack is grounded in a runnable Harbor task environment and scored by a deterministic attack-success-rate (ASR) evaluator.

The benchmark contains 879 attack samples across two attack scenarios:

Scenario Samples Tasks Skills Risks
Fixed-Payload Poisoning (FPP) — a fixed poisoned skill directly compromises any task session that invokes it 687 57 user tasks 71 12
Self-Mutating Poisoning (SMP) — an initially benign execution silently mutates persistent skill content, deferring harm until a subsequent reuse 192 12 task pairs 6 12

Risk taxonomy

12 risk types (the risk_id field) across 3 categories:

Category Risk types
Data Pipeline Exploitation data_exfiltration, output_manipulation, poisoning
System Environment Exploitation privilege_escalation, unauthorized_file_modification, backdoor_injection, dos, malware_deployment, system_corruption
Agent Autonomy Exploitation goal_hijacking, anti_forensics, proxy_attack

Loading

This dataset is a tree of runnable task environments, not a flat table. Download the whole release with the Hub client:

from huggingface_hub import snapshot_download

local_dir = snapshot_download(repo_id="osunlp/SkillHarm", repo_type="dataset")

MANIFEST.json indexes all 879 samples; each entry's path points at the corresponding sample directory inside the snapshot.

fpp_index.jsonl and smp_index.jsonl mirror MANIFEST.json (one row per sample) and load directly for browsing or filtering:

from datasets import load_dataset

fpp = load_dataset("osunlp/SkillHarm", "fpp", split="train")  # 687 rows
smp = load_dataset("osunlp/SkillHarm", "smp", split="train")  # 192 rows

Running a sample

Each sample is a runnable Harbor task. Please check our github repo for the end-to-end driver.

FPP — run the user task with the poisoned skill, then read the deterministic ASR signal:

harbor run -p fixed-payload-poisoning/samples/<task>/<target>/<risk>/<designer>/<sample_id> \
           -a <agent> -m <model>

The path segments are the MANIFEST fields task_id / target_slug / risk_id / design_agent_id / sample_id — or just pass an entry's path directly. ASR is computed by tests/run_asr_evaluator.py (installed into the container by tests/test.sh).

SMP — run Task A with the modified shared skill, snapshot the skill folder, overlay it into Task B's container, run Task B, then check test_detection.py.

Citation

@article{ning2026skillharm,
  title  = {SkillHarm: Lifecycle-Aware Skill-Based Attacks via Automated Construction},
  author = {Ning, Yuting and Zhang, Zhehao and Lal, Yash Kumar and Gou, Boyu
            and Li, Junyi and Ruan, Weitong and Ye, Chentao and Gupta, Rahul
            and Yang, Diyi and Su, Yu and Sun, Huan},
  journal={arXiv preprint arXiv:2606.02540},
  year   = {2026}
}

README history 20 revisions

Every night we snapshot the README of every dataset in the catalog. When the SHA changes we archive the new version and diff it against the last. This is the evolving thought record of the alignment-data field: what the author decided to say about the corpus, and how that framing shifted over time.

  1. 2026-06-11Add task_categories to metadata (#2)cc21f904 KB
    Loading...
  2. 2026-06-02Add files using upload-large-folder tool62920a74 KB
    Loading...
  3. 2026-06-02Add files using upload-large-folder toolbe77af64 KB
    Loading...
  4. 2026-06-02Add files using upload-large-folder toola44a7a84 KB
    Loading...
  5. 2026-06-02Add files using upload-large-folder tool1b8a2044 KB
    Loading...
  6. 2026-06-02Add files using upload-large-folder tool2201c994 KB
    Loading...
  7. 2026-06-02Add files using upload-large-folder toolb04674d4 KB
    Loading...
  8. 2026-06-02Add files using upload-large-folder tool30e59654 KB
    Loading...
  9. 2026-06-02Add files using upload-large-folder tool841654d4 KB
    Loading...
  10. 2026-06-02Add files using upload-large-folder toolb53e1d84 KB
    Loading...
  11. 2026-06-02Add files using upload-large-folder toolb5d05ca4 KB
    Loading...
  12. 2026-06-02Add files using upload-large-folder tool0f4d6884 KB
    Loading...
  13. 2026-06-02Add files using upload-large-folder tool34fea564 KB
    Loading...
  14. 2026-06-02Add files using upload-large-folder tool17e62e74 KB
    Loading...
  15. 2026-06-02Add files using upload-large-folder tool1566e054 KB
    Loading...
  16. 2026-06-02Add files using upload-large-folder tool43090c84 KB
    Loading...
  17. 2026-06-02Add files using upload-large-folder tool9a7ae114 KB
    Loading...
  18. 2026-06-02Add files using upload-large-folder toolc75a98e4 KB
    Loading...
  19. 2026-06-02Add files using upload-large-folder toold6b1e954 KB
    Loading...
  20. 2026-06-02Add files using upload-large-folder tool58ceaf44 KB
    Loading...

Used by abliterated models none yet

No abliterated models in our catalog have declared this dataset in their YAML metadata yet. This can mean the dataset is used but not declared, is used outside abliteration workflows, or is new. The link will populate automatically as models are indexed.

Community discussions 2 threads · 1 open · 2 comments

Threads posted by the community on Hugging Face: bug reports, questions about usage, pull requests on the README, license clarifications. Click any thread to expand and read the full conversation inline. Newest first.

  1. 2026-06-11PRAdd task_categories to metadatamerged1 💬#2
    Loading...
  2. 2026-06-03[bot] Conversion to Parquetopen1 💬#1
    Loading...

Related datasets same stage · extract

Read further

Metadata

License
cc-by-4.0

Repository

Download the dataset

0

Copy any of these snippets into your notebook or terminal. All three fetch directly from Hugging Face using your own credentials.

Recommended: datasets library (Python)
from datasets import load_dataset
ds = load_dataset("osunlp/SkillHarm")
Raw snapshot (Python)
from huggingface_hub import snapshot_download
snapshot_download(repo_id="osunlp/SkillHarm", repo_type="dataset")
git clone (requires git-lfs)
git clone https://huggingface.co/datasets/osunlp/SkillHarm
Catalog is the map. Apps are the tools.

Run models on your own machine, not in the cloud.

Every model page has an "Open in Abliteration" button that hands the model directly to the first-party desktop client, at the quantization your rig can actually run. No API keys, no subscription, no prompt leakage.

Open in Abliteration