Repository navigation
feat!: inherit the creator's tools and permissions by default - #138
Merged
Merged
Conversation
Routes, profiles, startup agents and pattern specs default to inherit: Codex gets no --sandbox and the user's config, with approval_policy never kept because a headless session cannot answer prompts; Claude gets no --permission-mode or --tools. Claude also accepts auto, bypass_permissions and dont_ask. Every narrowing value is unchanged and the access choices are defined once in Providers.access_choices/1. A control review route for Codex now needs read_only and an ignored user config, since an inherited config can add MCP servers. BREAKING CHANGE: routes with no access option inherit the server user's CLI configuration instead of running read-only. Set codex_sandbox: read_only with codex_user_config: ignore, or claude_permission_mode: read_only or plan, to keep the previous behaviour. Closes #137.
The quickstart now says CLI routes default to inherit; the release smoke checked for the old read-only wording. Refs #137.
joshrotenberg
marked this pull request as ready for review
November 1, 2026 04:45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Closes #137.
Plan
Written by a read-only Codex triage agent; fourth run of the procedure in #134.
lib/gen_agent_server/providers.exso omitted access options default to:inherit. Omit Codex:sandboxand:ignore_user_config, and Claude:permission_modeand:tools, when inherited. Keep Codexapproval_policy: :never. Add Claude:auto,:bypass_permissions, and:dont_ask; preserve existing explicit access mappings. Covers default inheritance, explicit modes, and narrowing compatibility.lib/gen_agent_server/instance_spec.exandlib/gen_agent_server/profiles.ex, and startup option construction inlib/gen_agent_server/runtime_config.ex. Update operation enums inlib/gen_agent_server/ops.ex. Dynamic descriptions already include resolved server access choices throughInstanceSpec.route/3; changing its defaults makes descriptions reportinherit.providers.ex:88-113, dynamic defaults atinstance_spec.ex:44-48, profile defaults atprofiles.ex:59-76, and startup defaults atruntime_config.ex:66-81.planandaccept_edits, but rejectread_only(profiles.ex:76). Acceptread_onlythere too, using the existing provider mapping.codex_user_confignow inherits. Reproducing the old complete configuration requires explicitcodex_user_config: ignore.auto,bypassPermissions, anddontAsk. Its backend already accepts all three.sandbox_modeconfig override rather than--sandbox. Inheritance must omit both forms.describe_instanceexposes access metadata for dynamically configured instances. Startup/profile instances deliberately reportconfigured: falseand route names only (lib/gen_agent_server.ex:68-75,invocations.ex:133-142). Preserve that contract; interpret this acceptance item as covering configured dynamic routes.extensions/patterns/lib/gen_agent_server/pattern_spec.exto accept the same access choices, since it delegates backend construction toProvidersbut separately validates spec values. Update root, patterns, MCP, and control tests to cover the changed defaults and explicit modes.review_read_only_explicitprovenance and the control extension’s requirement for explicitly read-only review routes. Add inherited and new Claude modes to rejection coverage. Inheritance does not qualify a route for that review policy.feat!:PR title.Changes from the plan after review
A Claude read-only review requested changes; the Codex implementer fixed all seven in one revision:
codex_user_config: ignoreas well ascodex_sandbox: read_only, because an inherited config can add MCP servers that a read-only sandbox does not limit;Providers.access_choices/1defines the allowed values once; providers, profiles, dynamic routes, pattern specs and the operation schemas derive from it;RuntimeConfiguses an internal builder that skips:provider_overrides, as before;bypass_permissions.Checks
On the host: warnings-as-errors compile, format, root tests (126, 118 before), the examples script, the echo smoke, a prod release, and every extension (control 95, mcp 33, patterns 18, peers 19, public_source 7, schedule 5, selection 8).
Live probe with a release built from this branch: a Codex route with no access options (resolved to
inherit/inherit) and a Claude route withclaude_permission_mode: autoeach rangit ls-remote https://github.com/genagent/gen_agent_server HEADand returned the same hash as the host.How it was made
Fourth run of the procedure (#134), one instance with three routes:
workspace_write