Setup guide / GitHub Copilot
Set up curio for GitHub Copilot.
Copilot reads skills from .github/skills, and from .claude/skills and .agents/skills too. Install curio's skill in the repository and Copilot can work on your workspace: in agent mode in your editor, in the Copilot CLI, and as the cloud agent on GitHub.
GitHub Copilot · the session the steps below set up, played on this page
Setup / 01
Four steps, once per project.
The agent gets a curio session and nothing more. Its edits wait in Sudo's sandbox, built against the workspace, until a person approves the commit.
-
01
Install curio
On the machine the agent works on. Skip this if curio is installed already.
Install script
The self-contained build for your system, checked against the release and put on your PATH. No .NET needed. Run it again to update.
$ curl -fsSL https://curiosity.sh/install.sh | bash $ curio tuiPS> irm https://curiosity.sh/install.ps1 | iex PS> curio tuiInstalls to
~/.curiosity/bin· read the script.NET tool
With the .NET SDK installed, curio is a global tool.
dotnet tool updatekeeps it current.$ dotnet tool install --global Curiosity.Shell $ curio tuiOr take the single file for your system from the releases
-
02
Sign in to your Studio
The browser signs you in with any login the workspace supports, SSO included. It needs a system administrator account. Leave the approve checkbox on the sign in page unticked, and every commit the agent stages waits for a person.
$ curio login --server https://my-workspace.curiosity.ai $ curio whoami -
03
Install GitHub Copilot
In VS Code, agent mode is part of the Copilot extension. For the terminal, the Copilot CLI is an npm package that needs Node.js 22 or later. Run
copilotand sign in with/login.$ npm install -g @github/copilot $ cd my-project $ copilotThe Copilot CLI is also on Homebrew and WinGet.
-
04
Give it curio's skill
curio skills install ./.github/skillswrites.github/skills/curio/SKILL.md. Commit it, so the cloud agent finds it in every task.$ curio skills install ./.github/skills $ git add .github/skills/curio $ git commit -m "Add the curio skill"Run it again to refresh the index of Sudo's skills. A copy you edited is kept unless you pass
--force.
In the cloud / 02
The Copilot cloud agent
The cloud agent works on GitHub Actions. Its setup steps install curio, and two Agents secrets sign it in. Use a token without the approve right, so approval stays with a person.
01
Install curio in .github/workflows/copilot-setup-steps.yml, in a job named copilot-setup-steps.
02
Add CURIOSITY_SERVER and CURIOSITY_TOKEN as Agents secrets in the repository's settings.
03
Add the workspace's domain to the agent's firewall allowlist.
name: Copilot Setup Steps
on: workflow_dispatch
jobs:
copilot-setup-steps:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- name: Install curio
run: |
curl -fsSL https://curiosity.sh/install.sh | CURIO_NO_MODIFY_PATH=1 bash
echo "$HOME/.curiosity/bin" >> "$GITHUB_PATH"
Use it / 03
Ask in your words. Approve in your browser.
Ask in agent mode or in copilot, or assign an issue to Copilot and let the cloud agent take it.
You ask
Add a code endpoint to the workspace that lists the open supplier notices for a part. Build it and stage the commit.
The agent reads the skill, then works through curio, one command at a time. You see each command; the last one waits for you.
$ curio skills search "code endpoint"
$ curio skills show add-code-endpoint
$ curio cat /workspace/config/schemas/nodes/Part.cs
$ curio put open-notices.cs /workspace/code/endpoints/open-notices.cs
$ curio run -- build
$ curio run -- commit -m "Open supplier notices for a part"
$ curio commit approve --no-wait # a person reviews it
$ curio commit wait --timeout 120 # until they answer
01
Let the CLI run curio without asking
Start it with copilot --allow-tool 'shell(curio)'. Approval still waits for a person: the right to approve is the token's, not the agent's.
02
Exit codes mean something
curio run passes the sandbox command's exit code through. 77, 78, 75 and 64 mean not signed in, not allowed, conflict and usage, so the agent can tell a failed build from a missing sign in. 79 is a commit waiting for a person, and 124 is curio giving up waiting.
03
JSON, and no waiting forever
The skill has the agent pass --json for one line of JSON, --yes where a command asks, and --timeout on every call. A long build runs with curio run --detach and is picked up with curio run wait.
04
Never the interface
The skill tells the agent to never run curio tui. It is the full screen interface for people, and it would hang the agent's terminal. Plain curio only prints the help.
05
Re-read before overwriting
Sudo or an admin may edit the same session. curio get prints the file's hash, and curio put --expected-hash <hash> refuses the write if the file changed since.
06
Approval stays with a person
Signed in without the approve right, the default, curio commit approve --no-wait opens Sudo's review screen in the browser and exits 79 at once. curio commit wait then hears the answer, whatever the agent does.
Other coding agents / 04
The same curio, from another harness.
Claude Code
Skill in .claude/skills
Reads the skill where it looks for skills. --global puts it in ~/.claude/skills for every project.
OpenAI Codex
Skill in .agents/skills
Codex reads skills from .agents/skills in the repository, in the CLI, the IDE and its cloud tasks.
Google Antigravity
Skill in .agents/skills
Antigravity reads workspace skills from .agents/skills, in the app, the IDE and the agy CLI.
Mistral Vibe
Skill in .agents/skills
Vibe reads .agents/skills in a trusted folder, and can run offline on a local Devstral model.
Devin
Skill in .agents/skills
Devin reads .agents/skills in every repository it works on. Its VM signs curio in from two secrets, CURIOSITY_SERVER and CURIOSITY_TOKEN.
Any other harness
Skill in any folder
If it can run a shell command, it can run curio: JSON output, exit codes that mean something, and one skill that says how.
Setup guide