SKILL.md manifest. The manifest contains YAML front matter and prompt-style instructions. The model uses the front matter to discover the skill, and reads the instructions when it decides to invoke the skill. Skills are compatible with the open Agent Skills standard.
Skills can influence planning, tool selection, and command execution. Treat every skill as privileged code and review it carefully before you use it. For more information, see Risks and safety.
Skills require an Azure OpenAI API version that supports the shell tool and skills. Confirm support for your target API version before you deploy to production.
Prerequisites
- An Azure OpenAI model deployed that supports the Responses API and the shell tool.
- An authentication method:
- API key, or
- Microsoft Entra ID.
- Install the client library for your language:
- Python:
pip install openai azure-identity - JavaScript/TypeScript:
npm install openai @azure/identity
- Python:
- For REST examples, set
AZURE_OPENAI_API_KEY(API key flow) orAZURE_OPENAI_AUTH_TOKEN(Microsoft Entra ID flow).
What’s in a skill
A skill bundle has a single top-level folder that contains aSKILL.md manifest and any supporting files:
SKILL.md file declares the skill’s name and description in YAML front matter, and provides the instructions the model follows when the skill is invoked. Front matter validation follows the Agent Skills specification.
Create a skill
Upload a skill bundle in either of these formats:- Directory upload (multipart): Upload multiple files. Each part includes the file path relative to a single top-level folder.
- Zip upload: Zip a single top-level folder and upload the
.zipfile.
skill_id that you reference when you attach the skill to a shell environment.
Use skills with hosted shell
To make skills available in a hosted shell environment, attach them through the environment’sskills array. After a skill is mounted, the model decides whether to invoke it based on your prompt.
In the examples that follow, replace gpt-5.5 with the name of your own model deployment.
Use skills with local shell mode
Skills also work with local shell mode. Instead of using askill_reference, supply skill files from local paths in the runtime you control.
Local shell mode doesn’t support uploaded
skill_reference attachments. Supply skill files from local paths instead.Inline skills
If you don’t want to create an uploaded skill, you can inline a base64-encoded zip bundle in the environment’sskills array. Inline skills are useful when you want a skill to live only for the duration of a single container’s lifecycle.
Versioning and management
Skills are versioned. Each upload creates a new version, and you reference a version through theversion field on a skill_reference. The version field accepts an integer or "latest".
Two pointers track versions:
default_versionis used when you don’t provide a version in askill_reference.latest_versiontracks the newest upload.
- You can’t delete the default version. Set another version as the default first.
- Deleting the last remaining version deletes the skill itself.
- Deleting a skill removes all its versions.
Limits and validation
Skill front matter validation follows the Agent Skills specification.
Risks and safety
Always inspect a skill before you use it with the Responses API. Skills introduce security risks such as prompt-injection-driven data exfiltration and unauthorized command execution. Follow these practices:- Treat skills as privileged code and instructions. Skill content can influence planning, tool usage, and command execution. Treat any skill as potentially untrusted input until you validate it.
- Don’t expose an open skills catalog to end users. Open selection of arbitrary skills increases the risk of prompt injection, policy bypass, and destructive actions from unvetted automation.
- Integrate skills at the developer level. Map each skill to a specific product workflow, prevent end users from selecting arbitrary skills, and gate high-impact actions behind explicit approval and policy checks.
- Require approval for sensitive actions. For workflows that can perform write or high-impact actions, require explicit approval before execution.