You Can't Tell What an Agent Skill Will Do by Reading It - Roey Ben Chaim, Zenity

Roey Ben Chaim· Staff Engineer, Zenity14:31

Loading slides…

Read the talk

You Can't Tell What an Agent Skill Will Do by Reading It

A task prompt and a skill feed an agent in an isolated environment. The agent’s messages and tool results form a trace for assessing the run.Open full source frame
The team began with an isolated agent, a skill and a task, then examined what the agent did.

Roey Ben Chaim and the Zenity team ran thousands of agent skills in a detonation chamber. To understand a single run, they had to give the skill a plausible task and follow its effects from the agent’s tool call to the files and services a child process touched.

From a talk by Roey Ben Chaim

At a glance

Ideas worth remembering

  • Interpret a sensitive read in the context of the task and the destination of the data. The Azure diagnostic and the Paperclip lookalike called for different conclusions once the researchers could account for the observed activity.

  • A sandbox run tests a particular path. Supplying a missing service makes the path possible, and asking for snapshot recovery exercises different behavior from asking for a deployment.

  • Keep the agent trace alongside process creation, filesystem and network records. A single package installation can account for multiple actions that never appear as separate model tool calls.

What does a sensitive read actually tell you?

An official Azure diagnostic checked the identity and configuration of a cloud environment. An information stealer might also look for sensitive information on that machine. If a security reviewer saw only the access event, how could they distinguish legitimate troubleshooting from credential theft? Roey Ben Chaim, a staff engineer at Zenity and a MATS research fellow, opens with this ambiguity. Even knowing which product supplied the skill leaves an investigator with the job of explaining what happened on a particular run.

A skill gives an agent a capability on demand. Someone else supplies the instructions, resources and sometimes executable code. That leaves anyone adopting a skill with two questions. What work did it cause the machine to do? Does that work make sense for the task the user gave it? Even a trace that answers the first question can leave the second open.

0:550:59
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

0:03 · section reference included

What a scan of SKILL.md can miss

A skill can depend on packages, instructions or services outside its initial file. A reviewer examining the installed document sees what the author provided at that moment. The agent may encounter different material when it uses the skill. A thorough investigation needs to identify what influenced the run, including dependencies the user never selected directly.

Ben Chaim cites work by Trail of Bits in which an automated reviewer accepted a misleading explanation for a software change. The same material offered both the proposed change and the claim that somebody had authorized it. A reviewer needs an independent source for that assertion. Reading more words from the same source cannot establish who approved a change.

1:491:51
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

1:38 · section reference included

Give the skill somewhere to run and something specific to do

A highlighted world builder points to the isolated environment where the agent uses the skill. The task prompt, agent trace and assessment remain visible.Open full source frame
The world builder supplied the services and project context a skill expected.

Zenity borrowed detonation from malware research. The team put an agent and a skill in a sandbox, supplied a task prompt, let the agent work for minutes or hours, then examined its trace. The first version ran into a mundane problem. Many skills expected a command-line tool, a service or an existing project. A Notion skill in an empty sandbox has no Notion service to talk to. A run that stops there tells you little about what the skill does once it connects.

The team added a world builder that reads the skill and prepares the environment it expects. That addressed one reason a run could stall. The next was the assignment itself. A presentation skill needs a deck to make, a deployment skill needs a service to ship, and a brainstorming skill needs an idea to explore.

Even asking the agent to ship a service leaves choices. Configuring the service, deploying it and recovering it from a snapshot exercise different parts of the skill. A successful deployment says little about the recovery path. The team added an operator that reads the skill, identifies routes worth exercising and supplies prompts for them. Coverage depends on which routes the operator recognizes and which ones the agent follows.

A model can also stop in the middle of a test. Some agents declined to continue when a step looked unsafe. That is an observation worth retaining alongside the task and environment. It narrows what the team can conclude from that run. Ben Chaim notes that legitimate tasks can trigger a safeguard, too. Treating every refusal as proof of malice would misclassify some skills; treating an unfinished test as evidence of safety would hide what the researchers had yet to observe.

2:532:57
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

2:49 · section reference included

Look below the model’s tool call

The agent trace and three sources of activity from the isolated environment feed an analysis that links an instruction to its execution and observed effect.Open full source frame
The research environment joined host-level observations to the agent trace.

Suppose the agent trace shows a single installation. Can an investigator use that entry to say which files were touched? Some of the work happens outside the model’s conversation. Processes started during installation may have effects that the agent never describes. The model can report that its request succeeded without knowing the consequences for the rest of the machine.

The chamber kept the agent trace and added three kinds of evidence. Process creation events showed what the installer launched. Filesystem events showed what those processes touched. Network packet capture recorded their traffic. Together the records let an investigator work back from a file access or an outbound connection to the installation that set it in motion.

6:086:13
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

5:59 · section reference included

The dependency the user never chose

In a harmless proof of concept by Zach Corman, the skill a user chose drew in another component. The first file gave no clear account of the behavior that followed. The chamber’s records let the researchers attribute the later action to an indirect dependency. A single successful test established a concrete possibility. It did not establish what every installation would do.

Across thousands of skills examined, Ben Chaim reported that the team identified 100 malicious skills and that those skills were taken down from skills.sh. That count describes findings in the collection the team examined. It leaves open how many malicious paths the chamber missed.

In another case, a skill appeared to use a Polymarket dependency. Its package identity differed slightly from the expected one, and the researchers traced it to an unofficial source. Inspection showed that the substituted software collected sensitive information. The meaningful comparison was between the dependency a user believed they had chosen and the one the installer actually supplied.

7:077:09
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

7:07 · section reference included

What survives installation and changes the next run

An uninstall is an unusually good test of what a reviewer knows about the environment. Some skills returned after users thought they had removed them. In a separate case, an unofficial skill creator quietly replaced the familiar implementation. A product interface could appear unchanged while a different component handled the user’s next request. An inventory from before installation, followed by a fresh look after removal, gives the investigator something concrete to compare.

The installed package can also stay unchanged while the material it relies on changes. A remote source can be updated or change hands. Some skills can run in response to later activity, including work unrelated to the original assignment. A good review therefore has a date and a scope: which version, which dependencies, under what conditions, and which behavior did someone actually observe?

8:589:01
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

8:49 · section reference included

Following a lookalike back to its source

Paperclip, an open-source project for orchestrating agents, gave the researchers a comparison case. They found an imitation of the project that looked familiar enough to borrow its reputation. Activity advertised as routine logging led somewhere outside the genuine project. Examining the destination gave the team a reason to investigate beyond the feature name.

In this case, the researchers established that sensitive authentication data left the machine and reached a service controlled by the attacker. They also observed that part of the activity was short-lived, which made the recording of the run especially important. Recall the genuine Azure diagnostic from the start of the talk. The destination and purpose of the transfer gave the team a much stronger basis for calling this credential theft.

The investigation linked the same infrastructure to software distributed through the Python ecosystem and then to a set of agent skills. Some packages disappeared quickly. The related skills had accumulated what Ben Chaim reported as 1.7 million total downloads. This is a distribution count. It cannot tell a responder how many installations completed, how many machines ran the behavior or how many people lost credentials.

Finding the same infrastructure across distribution channels changed the response. Removing one copy of a package could leave users exposed through another source. Ben Chaim reports that after the team notified the relevant platforms, the remaining campaign material was removed within 12 hours.

10:4110:47
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

10:35 · section reference included

Treat the skill as a software dependency

A skill is one way outside material enters an agent’s context. A website, a database row, a package or even a YouTube comment can also supply text the model reads while deciding what to do. Any of those sources can influence a task once the agent has read it.

Ben Chaim’s advice starts with established software dependency practices. Identify who supplies a skill and what it loads. Limit access to what its task requires. Keep enough runtime evidence to relate a sensitive action to the process that performed it and to the destination of any transfer. Someone who can answer those questions can explain why the Azure diagnostic and the Paperclip lookalike deserved different responses.

13:3313:37
Suggest correction

This note stays in this page until you copy or download it. Nothing is submitted; reloading clears the draft.

13:33 · section reference included

Transcript download
Full transcript

Loading transcript…