mirror of
https://github.com/openai/codex.git
synced 2026-11-13 22:47:20 +00:00
Enforce Agent Plugin runtime boundaries (#37027)
## What changed - Track Agent Plugin manifests through plugin, skill, and MCP loading so their capabilities use format-specific behavior without changing legacy plugins. - Discover only direct-child skills, exclude app and hook capabilities, isolate MCP data, and reject MCP configuration files that are non-regular or resolve outside the plugin root. - Bound model-visible skill instructions, plugin instructions, MCP descriptions, schemas, individual tools, and the aggregate Agent Plugin MCP tool set. - Stop MCP and OAuth redirects when Agent Plugins send configured or authorization headers, while retaining existing redirect behavior for legacy MCP servers. ## Testing - Add coverage for capability filtering, skill discovery, isolated MCP data and reserved-path expansion, unsafe MCP configuration files, context limits, and redirect handling. GitOrigin-RevId: c9af66b051269f3226628ca280a58d32c808c38f
This commit is contained in:
1 parent
f21dc46388
commit
56b82e676c
63 files changed
+1830
-106
No files matched your search
@@ -1202,7 +1202,7 @@ async fn keeps_inherited_namespace_when_symlink_target_is_scan_root_ancestor() {
|
||||
#[tokio::test]
|
||||
async fn plugin_skill_name_length_limit_allows_max_qualified_name() {
|
||||
let root = tempfile::tempdir().expect("tempdir");
|
||||
let plugin_name = "p".repeat(MAX_NAME_LEN - 1);
|
||||
let plugin_name = "p".repeat(MAX_NAME_LEN);
|
||||
let skill_name = "s".repeat(MAX_NAME_LEN);
|
||||
let plugin_root = root.path().join("plugins").join(&plugin_name);
|
||||
let frontmatter = format!("name: {skill_name}\ndescription: search sample data");
|
||||
@@ -1257,7 +1257,7 @@ async fn plugin_skill_name_length_limit_allows_max_qualified_name() {
|
||||
#[tokio::test]
|
||||
async fn plugin_skill_name_length_limit_rejects_overlong_qualified_name() {
|
||||
let root = tempfile::tempdir().expect("tempdir");
|
||||
let plugin_name = "p".repeat(MAX_NAME_LEN);
|
||||
let plugin_name = "p".repeat(MAX_NAME_LEN + 1);
|
||||
let skill_name = "s".repeat(MAX_NAME_LEN);
|
||||
let plugin_root = root.path().join("plugins").join(&plugin_name);
|
||||
let frontmatter = format!("name: {skill_name}\ndescription: search sample data");
|
||||
|
||||
Reference in new issue
Block a user