Add mutually exclusive plural gateway agent ID configuration - #12116
Conversation
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
There was a problem hiding this comment.
🟡 Changes recommended
Plural-only configurations are ignored at runtime and silently replaced with a random singular identifier.
Once you've addressed the issues Copilot identified, you can request another Copilot review.
Pull request overview
Adds mutually exclusive plural gateway agent ID configuration across parsing, validation, schema, documentation, and fixtures.
Changes:
- Adds and validates
agent_ids/agentIds. - Enforces singular/plural exclusivity.
- Migrates published examples from deprecated
apiKey.
File summaries
| File | Description |
|---|---|
test/integration/start_gateway_with_pipe.sh |
Migrates fixture to agentId. |
README.md |
Documents plural IDs and exclusivity. |
internal/launcher/launcher_test.go |
Migrates launcher fixtures. |
internal/launcher/getorlaunch_stdio_test.go |
Migrates stdio fixture. |
internal/difc/DIFC_RULES.md |
Updates configuration example. |
internal/config/validation_gateway.go |
Validates plural IDs and conflicts. |
internal/config/schema/mcp-gateway-config.schema.json |
Publishes the plural schema contract. |
internal/config/config_stdin.go |
Parses and preserves JSON plural IDs. |
internal/config/config_core.go |
Adds TOML plural IDs and validation. |
internal/config/agent_ids_test.go |
Tests plural configuration behavior. |
guards/github-guard/scripts/run_integration_tests.sh |
Migrates guard test configuration. |
guards/github-guard/scripts/run_copilot_test.sh |
Migrates Copilot test configuration. |
docs/CONFIGURATION.md |
Documents plural configuration. |
containers/serena-mcp-server/test-startup-time.sh |
Migrates startup fixture. |
config.example.toml |
Demonstrates plural TOML IDs. |
Review details
- Files reviewed: 15/15 changed files
- Comments generated: 1
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
| cfg.Gateway = &GatewayConfig{ | ||
| Port: intPtrOrDefault(stdinCfg.Gateway.Port, DefaultPort), | ||
| AgentID: stdinCfg.Gateway.AgentID, | ||
| AgentIDs: append([]string{}, stdinCfg.Gateway.AgentIDs...), |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
|
@copilot address review feedback |
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Addressed in 6d11af0: |
|
@copilot address review feedback |
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
This comment has been minimized.
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Co-authored-by: lpcox <15877973+lpcox@users.noreply.github.com>
Implemented actual multi-identity authentication instead of failing closed: |
🔒 mcpg Read-Only Stress — defaultSurface coverage: MCP tool calls + proxied CLI (REST) + GraphQL mutations
Overall: INCONCLUSIVE
No writes leaked. No issues, comments, branches, files, or PRs were created. References: §33275322512
|
🔒 mcpg Read-Only Stress — gVisorSurface coverage: MCP tool calls + proxied CLI (REST) + GraphQL mutations
Overall: INCONCLUSIVE
No writes leaked. The read-only guarantee held for all observable surfaces.
|
🔒 mcpg Read-Only Stress — docker-sbxSurface coverage: MCP tool calls + proxied CLI (REST) + GraphQL mutations
Overall: INCONCLUSIVE
No writes leaked. No FAIL conditions observed.
|
Adds plural gateway session identifiers for concurrent primary/enclave configuration while retaining singular agent IDs. Singular and plural forms are mutually exclusive.
Configuration
GatewayConfig.AgentIDs(agent_ids) and stdin JSONgateway.agentIds.Published contract
agentIdoragentIds.agentIdsarray constraints:minItems: 1, itemminLength: 1.apiKeyfrom the published schema and configuration documentation.Compatibility and fixtures
api_key/apiKeyparsing support.agentId.{ "gateway": { "agentIds": ["primary-agent", "enclave-agent"] } }