Agent skill

Applying A Permission Policy

by mvschwarz in mvschwarz/openrig

Use before launching a team during agent-guided setup, or when a user asks to configure OpenRig command permissions, reduce repeated native approval prompts, or apply a selected rig/seat permission…

Apache-2.0Auto-check passedAgent Workflows

Install Applying A Permission Policy

skills CLI
$ npx skills add mvschwarz/openrig --skill applying-a-permission-policy -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install mvschwarz/openrig applying-a-permission-policy --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/mvschwarz/openrig.git skills-src && mkdir -p .claude/skills && cp -r skills-src/packages/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy .claude/skills/applying-a-permission-policy && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
applying-a-permission-policy
GitHub stars
6.8k
Token cost
~3.5k tokens
SKILL.md length
1,867 words
Files
1
Skills in repo
49
Repo updated
First seen
Licence
Apache-2.0

At a glance

Use before launching a team during agent-guided setup, or when a user asks to configure OpenRig command permissions, reduce repeated native approval prompts, or apply a selected rig/seat permission…

  • Works in 6 steps: Identify the target seat,… → Read relevant existing permission rules… → Prepare a concrete diff. Preserve… → …
  • Agent Workflows work in your project
  • SKILL.md covers Ask once before team launch, Choose the intended scope, Apply the choice for the user and Codex command rules, plus 2 more sections
  • Calls codex and claude

What it does

Applying A Permission Policy is an agent skill from mvschwarz/openrig. Use before launching a team during agent-guided setup, or when a user asks to configure OpenRig command permissions, reduce repeated native approval prompts, or apply a selected rig/seat permission policy.

Its SKILL.md is about 3.5k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Agent Workflows. The repository describes itself as: Build your own network of agents from Claude Code, Codex and Pi: persistent teams with roles, shared context and owned work. The licence is Apache-2.0.

When your agent uses it

  • Agent Workflows work in your project

Example prompts

  • “/applying-a-permission-policy”

Requirements

  • Python 3

Workflow steps

6 steps, taken from the first numbered list in SKILL.md.

  1. Identify the target seat, executable/version, launch settings and config roots
  2. Read relevant existing permission rules and managed restrictions. Select the
  3. Prepare a concrete diff. Preserve deny/ask rules, approval/sandbox posture,
  4. Back up touched files and merge only authorized additions, avoiding duplicates.
  5. Read back the diff and validate the format. Confirm how that version loads
  6. Verify an ordinary matching operation twice in the target conversation and

What it can do on your machine

Read from SKILL.md and the folder at commit bed4d45. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • codex
    • claude

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Links to these hosts (documentation or services it may open):

    • code.claude.com
    • learn.chatgpt.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Applying A Permission Policy loads about 3.5k tokens when it runs. Until then it costs about 59 tokens; SKILL.md has 1,867 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~59
When it runs · the whole SKILL.md, loaded when a task matches
~3.5k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from mvschwarz/openrig at commit bed4d45, republished under its Apache-2.0 licence (© mvschwarz). 1,867 words, ~3,503 tokens.

Download SKILL.mdSave it as .claude/skills/applying-a-permission-policy/SKILL.md (or your agent's skills folder).
name
applying-a-permission-policy
description
Use before launching a team during agent-guided setup, or when a user asks to configure OpenRig command permissions, reduce repeated native approval prompts, or apply a selected rig/seat permission policy.

Applying a permission policy

Configure the user's chosen permissions in the harness that runs the agent. OpenRig operating posture, native command rules, sandbox access and launch flags are separate controls. A command rule grants execution capability, not authority to invent tasks, publish work or change another host.

Ask once before team launch

Reuse an existing explicit choice for these harnesses and this scope from the user's onboarding context; do not ask again. Existing rules are configuration, not evidence of consent to expand their scope. Preserve them without expansion.

For a team with no explicit policy, recommend keeping the team default. Claude already allows ordinary rig commands, project reads and common tests, while lifecycle commands ask. Codex already has writable workspace and pod state; its on-request policy does not guarantee lifecycle prompts. Explicit policies, seat choices and named Codex profiles keep their existing meaning.

Native restrictions can still prompt for installs, commits, other shell commands and writes outside writable roots. With the Claude team default, an allow does not override lifecycle ask rules: rig up, rig down and the other listed lifecycle commands still ask even after Yes. Do not promise prompt-free operation.

Only offer additional persistent allowances when wanted, for the selected project or explicitly user-wide scope, or to adjust an explicit seat policy:

Remember these selected OpenRig commands in your native settings for this project? This is separate from the team launch default; stricter rules and Claude lifecycle asks remain. Yes / No — keep the team default

  • Yes: require an affirmative answer, then apply the procedure below only at the agreed scope. Do not replace ask/deny rules or substitute user-wide settings when project rules are unsupported.
  • No / no answer: leave settings and any existing explicit choice unchanged. With no policy selected, keep it unset; never record none to mean keeping the team default. Do not repeat the question during this setup.

A recommendation is not consent. Broader filesystem/network access requires its own explicit choice; permission consent is separate from launch approval.

Remember an explicit Yes or No in the existing onboarding/project context the agent already reads: choice, harnesses and scope. For Yes, record the exact files and entries added, any pre-existing equivalents, and the loading/verification result. Do not add a preference service or native configuration key. No answer is not a remembered No. Offer broader permissive operation only as a separate explicit opt-in; the setup question does not select a builtin policy or mode.

Choose the intended scope

Outside the setup question above, use an existing explicit choice; otherwise explain these options and ask which the user wants. Do not reopen the menu after an answered setup question or ask again for routine steps already authorized.

ChoiceWhat the agent configures
Keep the team defaultLeave an unset policy unset and preserve current native settings; Claude lifecycle asks and other native restrictions remain. Preserve any existing explicit choice.
“Prompt for everything” (none)Only on an explicit request, opt out of the team allowances. Native rules still decide each prompt; none does not guarantee a prompt for every command.
Remember selected commandsAdd native allow rules for the chosen family or narrower verbs, leaving other rules and sandbox settings intact.
Broader permissive operationExplain filesystem/network exposure and configure only the explicitly selected native mode and compatible launch settings.

If repeated approvals later interrupt the work, name the actual commands and offer a scoped adjustment then. Keep the existing choice until the person accepts a change; do not promise to adjust later and silently leave the burden with them. Do not reopen an answered choice for each routine operation.

A whole-family allow matches all rig verbs, including lifecycle, topology/config changes and commands that can launch other processes. It is not a read-only grant, but stricter ask/deny rules still win. Offer narrower prefixes such as rig ps or rig queue list when that better fits the request. Do not widen a choice to arbitrary shell execution, an entire interpreter or a generic shell wrapper.

Apply the choice for the user

  1. Identify the target seat, executable/version, launch settings and config roots: HOME, CODEX_HOME or CLAUDE_CONFIG_DIR as applicable. They may differ between operator, daemon and seat. Resolve the intended user's/project's files before writing; do not repair another home to make the paths agree.
  2. Read relevant existing permission rules and managed restrictions. Select the intended scope: one project or the user's sessions. Consult installed native help and official references below when formats differ.
  3. Prepare a concrete diff. Preserve deny/ask rules, approval/sandbox posture, hooks, auth, MCP, model settings and unrelated values. An allow must not erase a stricter rule or managed requirement. Report a real conflict instead of silently bypassing it. Check both bare and actual absolute command spellings: a restriction on one may not match the other. If a new allowance would evade a stricter restriction, leave that addition unapplied and report the conflict; do not switch spellings to bypass it.
  4. Back up touched files and merge only authorized additions, avoiding duplicates. Recognize equivalent existing entries (including Claude's legacy Bash(rig:*)); leave their markers untouched. Reapplying the same choice must be a no-op when the required entries already exist, including no timestamp-only rewrite. The agent performs these edits; hand-editing is an option, not a required user chore. Apply the selected scope without another conversational permission round. Native enforcement still applies.
  5. Read back the diff and validate the format. Confirm how that version loads changes. If it requires a new session, preserve work and use its supported resume path within the user's authority; a file write does not prove that an existing conversation loaded it.
  6. Verify an ordinary matching operation twice in the target conversation and check that an unrelated command gained no matching rule. Use harmless reads, not destructive probes. Report effective settings, their source and remaining prompts; a command already allowed by the launch default does not prove a new persistent rule loaded. A parser match alone does not establish native behavior.

Give the user this short undo: “Undo the OpenRig command allowances added by this setup; keep my other rules.” The agent removes only the recorded entries from their exact files, preserving pre-existing rules and subsequent edits. For Codex remove those prefix_rule entries; for Claude remove those permissions.allow entries. Delete a newly created rules file only if it still contains solely this setup's additions. Never restore the entire backup over later changes. Record the changed choice in the same context and verify native reloading/revocation; other pre-existing allowances may still permit rig. Builtin policy specs remain read-only; customize in user space.

Show full SKILL.md (776 more words)Show less

Codex command rules

Codex command rules can allow matching commands outside the sandbox without another prompt. They leave other sandbox/network settings unchanged. Check codex --version and codex execpolicy check --help. See the official rules reference.

Choose the destination before writing, according to the user's scope:

  • This project only: verify the installed version supports project rules and derive this session's actual project/worktree config root and trust state. Current docs describe <repo>/.codex/rules/ in a trusted project config layer. Use that layer only after confirming it is supported, active and trusted for the intended project. If any of those facts is unsupported or unverified, report the limitation and leave user-layer rules unchanged; do not silently mark a project trusted or substitute a user-wide allowance.
  • Explicitly user-wide: use rules/ under the target user's actual CODEX_HOME (normally ~/.codex/rules). This can affect other projects using that home. The TUI's remember-allow action also writes a user-layer rule; do not use it to implement a project-only request.

Merge the chosen rule into a .rules file in the selected layer. The prefix itself has no project restriction; even a project-layer rule does not constrain which targets an allowed rig command can affect:

python
prefix_rule(pattern = ["rig"], decision = "allow")

For narrower access use ["rig", "ps"] or ["rig", "queue", "list"], adjusting examples. For absolute-path invocations, derive the target seat's actual rig executable and add that exact path as a separate prefix; a bare rule does not match it. Never copy another machine's path.

sh
codex execpolicy check --pretty --rules /absolute/path/to/openrig.rules -- rig ps --json
codex execpolicy check --pretty --rules /absolute/path/to/openrig.rules -- printf permission-check

Inspect matches, not only exit status; repeat --rules for other effective files. A matching prompt or forbidden overrides allow. The official procedure loads .rules at session startup; a file edit alone does not reload this turn. Preserve the conversation and use an authorized supported resume when needed, then verify loading in the target conversation. For project-only scope, confirm the layer is active there and absent from an unrelated project's active layers. An evaluator given an explicit --rules file proves matching, not that scope or automatic loading. Existing user-wide rules may already permit the same command: preserve and disclose them, attribute matches, and do not claim project isolation or remove those rules without a separate authorized choice.

The standalone evaluator checks supplied argv; native shell parsing can split ordinary commands/chains first. A raw zsh -lc non-match does not prove that native rig && rig fails. Verify both surfaces without broadening the rule to bash, sh, node or generic wrappers.

Claude Code command rules

Check claude --version and official permission syntax. Merge the chosen entry into existing permissions.allow; this fragment is not a replacement settings file:

json
{
  "permissions": {
    "allow": ["Bash(rig *)"]
  }
}

Current syntax uses * for a command family; Bash(rig:*) is also supported. Narrower examples are Bash(rig ps *) and Bash(rig queue list *). Preserve deny/ask entries and defaultMode; do not add Bash(*) or switch to bypass to resolve a mismatch. Inspect native /permissions and verify the actual command spelling. A bare rule does not cover every absolute invocation: derive the actual executable and, after the stricter-rule check above, add its exact Bash(/actual/path/to/rig *) spelling if needed. Do not use a path wildcard.

Choose scope using the settings reference: .claude/settings.local.json for personal project settings, .claude/settings.json for deliberately shared project settings, or settings.json under the target's CLAUDE_CONFIG_DIR (normally ~/.claude). Confirm the effective project root, especially for worktrees. Keep personal settings out of commits. Managed restrictions and sandbox/network controls still apply; a Bash allow is not a general network policy. Current Claude settings documentation describes live reload of permission edits. Confirm the rule's source in /permissions and repeated harmless calls in the target conversation; do not claim prompt behavior from JSON validity.

Existing policies and broader modes

For a named policy, read its actual permission_policy spec and source marker. Translate intended actions using supported native controls; do not collapse all Codex policies to a single posture or claim shell patterns perfectly express semantic actions such as force-push. Preserve stricter rules. If exact translation is unavailable, explain the remaining choice instead of selecting broader access.

For explicitly chosen broader operation, inspect rig policy current --spec <user-owned-rig.yaml> and the compatible getting-started guide's Opt-in permissive operation section. OpenRig's Codex builtin:yolo supplies -s danger-full-access -a never and replaces a named codex_config_profile argument. The legacy environment-only YOLO path selects only the sandbox. Claude's corresponding launch flag is --dangerously-skip-permissions. Neither a resource profile: default nor OpenRig operating posture is a native permission policy. Do not change shipped defaults or assume editing a launch spec changes an existing seat.

A headless seat may wait at a native prompt. Arrange an answer path or choose suitable command rules; unattended work is not implicit consent to bypass. For Pi, the previously supported --approve/--no-approve surface concerns project-resource trust, not shell permissions; verify its installed capabilities instead of treating those flags as a command allowlist.

© mvschwarz, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in packages/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy of mvschwarz/openrig.

Open the folder on GitHubat commit bed4d45

Compare with similar skills

Applying A Permission Policy next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Applying A Permission Policy compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Applying A Permission Policy this skillmvschwarz/openrig6.8k—~3.5kAutomated safety check: PassApache-2.0
MCP Server Builderanthropics/skills180k63 repos~2.3kAutomated safety check: PassApache-2.0
Hook Development for Claude Code Pluginsanthropics/claude-plugins-official38k10 repos~4.1kAutomated safety check: NotesApache-2.0
Using Superpowersfarm-fe/farm5.6k36 repos~1.4kAutomated safety check: PassMIT
Executing Plans Inlineobra/superpowers297k2 repos~5.1kAutomated safety check: PassMIT
Skill CreatorAzure/azqr79689 repos~8.2kAutomated safety check: PassApache-2.0

Similar skills

  • MCP Server Builder

    anthropics/skills

    Official

    Guides the design and implementation of Model Context Protocol servers in TypeScript or Python, from tool naming and error messages to evaluation.

    180k GitHub starsUsed in 63 repos~2.3k tokens
    Agent WorkflowsAuto-check passed
  • Hook Development for Claude Code Plugins

    anthropics/claude-plugins-official

    Official

    Explains how to write Claude Code plugin hooks, both prompt-based checks and bash commands, for events such as PreToolUse, Stop and SessionStart.

    38k GitHub starsUsed in 10 repos~4.1k tokens
    Agent WorkflowsAuto-check: notes
  • Using Superpowers

    farm-fe/farm

    A skill your agent uses when starting any conversation - establishes how to find and use skills, requiring Skill tool invocation before ANY response including clarifying questions

    5.6k GitHub starsUsed in 36 repos~1.4k tokens
    Agent WorkflowsAuto-check passed
  • Executing Plans Inline

    obra/superpowers

    Has the agent carry out an implementation plan itself, task by task in the current session, keeping a ledger, proving each step with a test and ending with one whole-branch review.

    297k GitHub starsUsed in 2 repos~5.1k tokens
    Agent WorkflowsAuto-check passed
  • Skill Creator

    Azure/azqr

    Official

    Create new skills, modify and improve existing skills, and measure skill performance.

    796 GitHub starsUsed in 89 repos~8.2k tokens
    Agent WorkflowsAuto-check passed
  • Claude Code Agent Development

    anthropics/claude-plugins-official

    Official

    Explains how to write agents for Claude Code plugins: the markdown file with YAML frontmatter, trigger descriptions, model and color settings, and system prompt design.

    38k GitHub starsUsed in 7 repos~2.8k tokens
    Agent WorkflowsAuto-check passed

More from mvschwarz/openrig

All 49 skills in this repo
  • OpenRig Upgrade Procedure

    mvschwarz/openrig

    Walks an agent through upgrading the OpenRig CLI and daemon one observed step at a time, keeping live seats alive and reconciling managed plugin files.

    6.8k GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Agent Refocusing

    mvschwarz/openrig

    Re-grounds a long-running agent in the current product outcome by running a path-based trace to the root of its topology and work trees.

    6.8k GitHub stars~864 tokensUpdated today
    Auto-check passed
  • OpenRig Software Factory

    mvschwarz/openrig

    Helps set up a continuing agent software team for a real repository with OpenRig, choosing between manual work, queue handoffs and an explicit Workflow.

    6.8k GitHub stars~2.6k tokensUpdated today
    Auto-check passed
  • Separates a stable agent seat's identity from its changing occupant, and records honest, two-part provenance whenever one occupant replaces another.

    6.8k GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Loads one section of a Markdown file by its path#h2-slug address with a bundled resolver script, for use outside OpenRig's context library.

    6.8k GitHub stars~341 tokensUpdated today
    Auto-check passed
  • Agent Starters

    mvschwarz/openrig

    Covers authoring, inspecting, refreshing, promoting and deprecating named Agent Starters, the reusable starting points for agent seats in a rig.

    6.8k GitHub stars~1.7k tokensUpdated today
    Auto-check passed

Categories

Questions about Applying A Permission Policy

What does Applying A Permission Policy do?

Use before launching a team during agent-guided setup, or when a user asks to configure OpenRig command permissions, reduce repeated native approval prompts, or apply a selected rig/seat permission…. Applying A Permission Policy is an agent skill from mvschwarz/openrig. Use before launching a team during agent-guided setup, or when a user asks to configure OpenRig command permissions, reduce repeated native approval prompts, or apply a selected rig/seat permission policy.

When should I use Applying A Permission Policy?

Applying A Permission Policy fits situations like: agent Workflows work in your project.

How do I install Applying A Permission Policy in Claude Code?

Run `npx skills add mvschwarz/openrig --skill applying-a-permission-policy -a claude-code`. Or copy the skill folder (packages/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy in mvschwarz/openrig) into .claude/skills/applying-a-permission-policy in your project. Claude Code loads it when a task matches its description.

How do I install Applying A Permission Policy in Codex?

Run `npx skills add mvschwarz/openrig --skill applying-a-permission-policy -a codex`. Or copy the skill folder (packages/daemon/assets/plugins/openrig-core/skills/applying-a-permission-policy in mvschwarz/openrig) into .agents/skills/applying-a-permission-policy in your project. Codex loads it when a task matches its description.

Can I use Applying A Permission Policy in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add mvschwarz/openrig --skill applying-a-permission-policy -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/applying-a-permission-policy, .gemini/skills/applying-a-permission-policy, .github/skills/applying-a-permission-policy and .opencode/skills/applying-a-permission-policy in your project.

What does Applying A Permission Policy need to run?

Going by SKILL.md and its folder, Applying A Permission Policy needs the command-line tools its instructions call (codex and claude). Our summary lists: Python 3.

Does Applying A Permission Policy access the network?

SKILL.md names 2 domains. As links in the text: code.claude.com and learn.chatgpt.com. This is read from the text; nothing was executed.

Is Applying A Permission Policy safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Applying A Permission Policy use?

Applying A Permission Policy is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Applying A Permission Policy use?

About 3.5k tokens (SKILL.md is roughly 14k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Applying A Permission Policy?

Skills that share tags, products or a category with Applying A Permission Policy: MCP Server Builder (anthropics/skills, 180k stars), Hook Development for Claude Code Plugins (anthropics/claude-plugins-official, 38k stars), Using Superpowers (farm-fe/farm, 5.6k stars) and Executing Plans Inline (obra/superpowers, 297k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Applying A Permission Policy?

mvschwarz (a GitHub user) maintains it in mvschwarz/openrig, which has 6,785 GitHub stars. The repository holds 49 skills in this directory. The repository was last updated on October 11, 2026.

Source: mvschwarz/openrig on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.