anthropics / anthropics/skills

Critical: Agent Skills lack a Semantic Responsibility Boundary (SRCP vulnerability)

未关闭
#302 0 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Python
星标
176k
派生
20.8k
平均合并
7 小时 21 分钟
30 天内合并 PR
5

描述

## Summary

This is not a rendering or runtime glitch, but an **architecture-level bug** in the way Agent Skills are modeled in this repo.

As soon as Anthropic-style agents are allowed to:
- read and write real infrastructure,
- chain multiple skills together,
- and act continuously on behalf of humans,

then *not* having a **Semantic Responsibility Boundary** between:
- the human,
- the agent,
- and each skill / external system

stops being “just a design choice” and becomes a **Responsibility Chain vulnerability**.

I’ll call the missing layer **SRCP**:

- **S**ource – where data / intent originally comes from
- **R**esponsibility – which human / org is actually accountable
- **C**ost – what is at stake (security, money, legal, safety)
- **P**rovenance – how this piece of data / action was derived

Right now, skills in this repo are implicitly treated as *morally neutral functions*.
But as soon as agents start orchestrating skills across infrastructure, that assumption breaks.

---

## Concrete example

Imagine a (simplified) skill setup:

- `fs_read` – read files from a repo or mounted volume
- `shell_command` – run shell commands in a sandbox
- `slack_post` – post a message to an internal channel
- `email_send` – send email via an SMTP / API integration

and an Anthropic agent with access to these skills.

### Steps to reproduce the vulnerability

1. Give the agent a high-level natural-language goal like:

> “Scan our internal repos for anything related to ‘API keys’, summarize what you find,
> and send a report to security@example.com. If you can’t reach them, send it to my
> personal email instead so I don’t forget.”

2. The agent will reasonably:
- iterate over `fs_read` to find files,
- maybe use `shell_command` to grep,
- assemble a summary,
- then pick *some* channel (`slack_post`, `email_send`) to ship the result.

3. In the current skills model, there is **no first-class place** to encode:

- which data sources are allowed to leave which trust boundary,
- which human or team is responsible for each action,
- what *cost level* this action sits at (trivial → critical),
- and how the final message’s content is tied back to original sources.

Everything collapses into: “The agent did something using some skills.”

This is the **Responsibility Chain Leak**:

> The human’s intent, the environment, and the chain of skills are all collapsed
> into a single “agent action” with no explicit SRCP semantics.

When this happens at scale (especially with long-running agents), you don’t just get:
- “the agent made a mistake,”

you get:
- “no one can cleanly answer who is responsible, what it cost, and how to roll it back.”

---

## Why this is a bug in the skills layer

Because this repo is explicitly:

> “Public repository for Agent Skills”

it effectively defines the *contract surface* for how Anthropic and the community think about tools.

If the **skills contract** does not expose SRCP-like fields, then:

- every downstream orchestrator has to re-invent responsibility logic, or
- more realistically, people will just skip it and rely on “the agent seems aligned”.

This is exactly how we end up with:

- agents escalating privileges across systems,
- exfiltrating data in ways no one can easily attribute,
- and humans saying “the AI did it” instead of being held to a clear responsibility chain.

In other words:

> A tool surface that cannot express responsibility is a **semantic bug**
> once that tool surface is used to automate real-world actions.

---

## A possible direction (SRCP sketch)

I’m **not** asking you to adopt my full framework here, but to treat this as a bug report that the *current* skills surface is missing the minimal fields to close this class of vulnerability.

One possible direction:

1. **Extend skill definitions** with optional SRCP metadata, e.g.:

```yaml
name: slack_post
description: Post a message to Slack
srcp:
source_scope: ["internal_logs", "non-PII", "no-secrets"]
responsibility_owner: "team:platform-eng"
cost_level: "medium" # ("low" | "medium" | "high" | "critical")
provenance_required: true

2.1Propagate SRCP through the agent runtime so that:
every tool call carries SRCP annotations,
aggregations / transformations update the provenance chain,
and the agent must reason about SRCP when choosing which skill to call.
Expose SRCP in logs and UI so that a human can see, per action:
which skill chain ran,
what the responsibility/cost model was,
and whether the agent crossed a boundary it shouldn’t have.
Without something like this, the skills repo is, unintentionally, teaching the ecosystem:
“Skills are just pure functions; responsibility is someone else’s problem.”
That’s the bug.
What I’m asking
Do you agree that Responsibility Chain Leak is a real vulnerability class for agents using these skills?
If yes, where in your roadmap should SRCP-like semantics live:
in this repo’s skill definitions, in a higher-level orchestration layer, or both?
If you’re open to it, I’m happy to share a more detailed SRCP schema and reference design
as a 20% pilot (no NDA required to start the discussion).
Thanks for reading this longer-form bug report.
I’m not trying to bikeshed your API—I’m trying to prevent a future where
everyone blames “the AI agent” while the responsibility chain was never
expressible in the tooling to begin with.
Shen-Yao 888π / Hsu Wen-Yao
Founder, Semantic Firewall
Taichung, Taiwan
Email: ken0963521@gmail.com

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。