@@ -465,6 +465,13 @@ type SessionConfig struct {
465465 // ConfigDir overrides the default configuration directory location.
466466 // When specified, the session will use this directory for storing config and state.
467467 ConfigDir string
468+ // EnableConfigDiscovery, when true, automatically discovers MCP server configurations
469+ // (e.g. .mcp.json, .vscode/mcp.json) and skill directories from the working directory
470+ // and merges them with any explicitly provided MCPServers and SkillDirectories, with
471+ // explicit values taking precedence on name collision.
472+ // Custom instruction files (.github/copilot-instructions.md, AGENTS.md, etc.) are
473+ // always loaded from the working directory regardless of this setting.
474+ EnableConfigDiscovery bool
468475 // Tools exposes caller-implemented tools to the CLI
469476 Tools []Tool
470477 // SystemMessage configures system message customization
@@ -692,6 +699,13 @@ type ResumeSessionConfig struct {
692699 WorkingDirectory string
693700 // ConfigDir overrides the default configuration directory location.
694701 ConfigDir string
702+ // EnableConfigDiscovery, when true, automatically discovers MCP server configurations
703+ // (e.g. .mcp.json, .vscode/mcp.json) and skill directories from the working directory
704+ // and merges them with any explicitly provided MCPServers and SkillDirectories, with
705+ // explicit values taking precedence on name collision.
706+ // Custom instruction files (.github/copilot-instructions.md, AGENTS.md, etc.) are
707+ // always loaded from the working directory regardless of this setting.
708+ EnableConfigDiscovery bool
695709 // Streaming enables streaming of assistant message and reasoning chunks.
696710 // When true, assistant.message_delta and assistant.reasoning_delta events
697711 // with deltaContent are sent as the response is generated.
@@ -889,33 +903,34 @@ type SessionLifecycleHandler func(event SessionLifecycleEvent)
889903
890904// createSessionRequest is the request for session.create
891905type createSessionRequest struct {
892- Model string `json:"model,omitempty"`
893- SessionID string `json:"sessionId,omitempty"`
894- ClientName string `json:"clientName,omitempty"`
895- ReasoningEffort string `json:"reasoningEffort,omitempty"`
896- Tools []Tool `json:"tools,omitempty"`
897- SystemMessage * SystemMessageConfig `json:"systemMessage,omitempty"`
898- AvailableTools []string `json:"availableTools"`
899- ExcludedTools []string `json:"excludedTools,omitempty"`
900- Provider * ProviderConfig `json:"provider,omitempty"`
901- ModelCapabilities * rpc.ModelCapabilitiesOverride `json:"modelCapabilities,omitempty"`
902- RequestPermission * bool `json:"requestPermission,omitempty"`
903- RequestUserInput * bool `json:"requestUserInput,omitempty"`
904- Hooks * bool `json:"hooks,omitempty"`
905- WorkingDirectory string `json:"workingDirectory,omitempty"`
906- Streaming * bool `json:"streaming,omitempty"`
907- MCPServers map [string ]MCPServerConfig `json:"mcpServers,omitempty"`
908- EnvValueMode string `json:"envValueMode,omitempty"`
909- CustomAgents []CustomAgentConfig `json:"customAgents,omitempty"`
910- Agent string `json:"agent,omitempty"`
911- ConfigDir string `json:"configDir,omitempty"`
912- SkillDirectories []string `json:"skillDirectories,omitempty"`
913- DisabledSkills []string `json:"disabledSkills,omitempty"`
914- InfiniteSessions * InfiniteSessionConfig `json:"infiniteSessions,omitempty"`
915- Commands []wireCommand `json:"commands,omitempty"`
916- RequestElicitation * bool `json:"requestElicitation,omitempty"`
917- Traceparent string `json:"traceparent,omitempty"`
918- Tracestate string `json:"tracestate,omitempty"`
906+ Model string `json:"model,omitempty"`
907+ SessionID string `json:"sessionId,omitempty"`
908+ ClientName string `json:"clientName,omitempty"`
909+ ReasoningEffort string `json:"reasoningEffort,omitempty"`
910+ Tools []Tool `json:"tools,omitempty"`
911+ SystemMessage * SystemMessageConfig `json:"systemMessage,omitempty"`
912+ AvailableTools []string `json:"availableTools"`
913+ ExcludedTools []string `json:"excludedTools,omitempty"`
914+ Provider * ProviderConfig `json:"provider,omitempty"`
915+ ModelCapabilities * rpc.ModelCapabilitiesOverride `json:"modelCapabilities,omitempty"`
916+ RequestPermission * bool `json:"requestPermission,omitempty"`
917+ RequestUserInput * bool `json:"requestUserInput,omitempty"`
918+ Hooks * bool `json:"hooks,omitempty"`
919+ WorkingDirectory string `json:"workingDirectory,omitempty"`
920+ Streaming * bool `json:"streaming,omitempty"`
921+ MCPServers map [string ]MCPServerConfig `json:"mcpServers,omitempty"`
922+ EnvValueMode string `json:"envValueMode,omitempty"`
923+ CustomAgents []CustomAgentConfig `json:"customAgents,omitempty"`
924+ Agent string `json:"agent,omitempty"`
925+ ConfigDir string `json:"configDir,omitempty"`
926+ EnableConfigDiscovery * bool `json:"enableConfigDiscovery,omitempty"`
927+ SkillDirectories []string `json:"skillDirectories,omitempty"`
928+ DisabledSkills []string `json:"disabledSkills,omitempty"`
929+ InfiniteSessions * InfiniteSessionConfig `json:"infiniteSessions,omitempty"`
930+ Commands []wireCommand `json:"commands,omitempty"`
931+ RequestElicitation * bool `json:"requestElicitation,omitempty"`
932+ Traceparent string `json:"traceparent,omitempty"`
933+ Tracestate string `json:"tracestate,omitempty"`
919934}
920935
921936// wireCommand is the wire representation of a command (name + description only, no handler).
@@ -933,34 +948,35 @@ type createSessionResponse struct {
933948
934949// resumeSessionRequest is the request for session.resume
935950type resumeSessionRequest struct {
936- SessionID string `json:"sessionId"`
937- ClientName string `json:"clientName,omitempty"`
938- Model string `json:"model,omitempty"`
939- ReasoningEffort string `json:"reasoningEffort,omitempty"`
940- Tools []Tool `json:"tools,omitempty"`
941- SystemMessage * SystemMessageConfig `json:"systemMessage,omitempty"`
942- AvailableTools []string `json:"availableTools"`
943- ExcludedTools []string `json:"excludedTools,omitempty"`
944- Provider * ProviderConfig `json:"provider,omitempty"`
945- ModelCapabilities * rpc.ModelCapabilitiesOverride `json:"modelCapabilities,omitempty"`
946- RequestPermission * bool `json:"requestPermission,omitempty"`
947- RequestUserInput * bool `json:"requestUserInput,omitempty"`
948- Hooks * bool `json:"hooks,omitempty"`
949- WorkingDirectory string `json:"workingDirectory,omitempty"`
950- ConfigDir string `json:"configDir,omitempty"`
951- DisableResume * bool `json:"disableResume,omitempty"`
952- Streaming * bool `json:"streaming,omitempty"`
953- MCPServers map [string ]MCPServerConfig `json:"mcpServers,omitempty"`
954- EnvValueMode string `json:"envValueMode,omitempty"`
955- CustomAgents []CustomAgentConfig `json:"customAgents,omitempty"`
956- Agent string `json:"agent,omitempty"`
957- SkillDirectories []string `json:"skillDirectories,omitempty"`
958- DisabledSkills []string `json:"disabledSkills,omitempty"`
959- InfiniteSessions * InfiniteSessionConfig `json:"infiniteSessions,omitempty"`
960- Commands []wireCommand `json:"commands,omitempty"`
961- RequestElicitation * bool `json:"requestElicitation,omitempty"`
962- Traceparent string `json:"traceparent,omitempty"`
963- Tracestate string `json:"tracestate,omitempty"`
951+ SessionID string `json:"sessionId"`
952+ ClientName string `json:"clientName,omitempty"`
953+ Model string `json:"model,omitempty"`
954+ ReasoningEffort string `json:"reasoningEffort,omitempty"`
955+ Tools []Tool `json:"tools,omitempty"`
956+ SystemMessage * SystemMessageConfig `json:"systemMessage,omitempty"`
957+ AvailableTools []string `json:"availableTools"`
958+ ExcludedTools []string `json:"excludedTools,omitempty"`
959+ Provider * ProviderConfig `json:"provider,omitempty"`
960+ ModelCapabilities * rpc.ModelCapabilitiesOverride `json:"modelCapabilities,omitempty"`
961+ RequestPermission * bool `json:"requestPermission,omitempty"`
962+ RequestUserInput * bool `json:"requestUserInput,omitempty"`
963+ Hooks * bool `json:"hooks,omitempty"`
964+ WorkingDirectory string `json:"workingDirectory,omitempty"`
965+ ConfigDir string `json:"configDir,omitempty"`
966+ EnableConfigDiscovery * bool `json:"enableConfigDiscovery,omitempty"`
967+ DisableResume * bool `json:"disableResume,omitempty"`
968+ Streaming * bool `json:"streaming,omitempty"`
969+ MCPServers map [string ]MCPServerConfig `json:"mcpServers,omitempty"`
970+ EnvValueMode string `json:"envValueMode,omitempty"`
971+ CustomAgents []CustomAgentConfig `json:"customAgents,omitempty"`
972+ Agent string `json:"agent,omitempty"`
973+ SkillDirectories []string `json:"skillDirectories,omitempty"`
974+ DisabledSkills []string `json:"disabledSkills,omitempty"`
975+ InfiniteSessions * InfiniteSessionConfig `json:"infiniteSessions,omitempty"`
976+ Commands []wireCommand `json:"commands,omitempty"`
977+ RequestElicitation * bool `json:"requestElicitation,omitempty"`
978+ Traceparent string `json:"traceparent,omitempty"`
979+ Tracestate string `json:"tracestate,omitempty"`
964980}
965981
966982// resumeSessionResponse is the response from session.resume
0 commit comments