Summary
The GitHub Copilot extractor and applier use relative paths for .vscode/mcp.json and .github/copilot-instructions.md. This means the actual files read/written depend entirely on the current working directory when apc is run — making the tool unreliable when invoked from different directories.
Steps to Reproduce
# Step 1: Run mcp sync from one directory
cd ~/project-a
apc mcp sync --all -y
# Step 2: Run collect from another directory
cd ~/project-b
apc collect -y
# github-copilot shows 0 MCP servers — because it reads .vscode/mcp.json from project-b, not project-a!
# Step 3: Verify the config was written to CWD, not a global location
ls ~/project-a/.vscode/mcp.json # exists
ls ~/project-b/.vscode/mcp.json # does not exist
Actual Behavior
CopilotApplier.apply_mcp_servers() writes to .vscode/mcp.json (relative)
CopilotExtractor.extract_mcp_servers() reads from .vscode/mcp.json (relative)
CopilotApplier.apply_skills() writes to .github/copilot-instructions.md (relative)
CopilotExtractor.extract_skills() reads from .github/copilot-instructions.md (relative)
- Config file ends up in whichever directory
apc was invoked from
Expected Behavior
GitHub Copilot has a global MCP config location: ~/.vscode/mcp.json (VS Code user-level settings). apc should use this absolute path for global MCP management, not a relative .vscode/mcp.json.
Similarly, .github/copilot-instructions.md is project-scoped — for a global tool like apc, there should either be a documented fallback path or a warning that Copilot instructions are project-scoped.
Affected Code
# src/extractors/copilot.py and src/appliers/copilot.py
COPILOT_INSTRUCTIONS = Path(".github") / "copilot-instructions.md" # relative!
VSCODE_MCP_JSON = Path(".vscode") / "mcp.json" # relative!
Proposed Fix
VSCODE_MCP_JSON = Path.home() / ".vscode" / "mcp.json" # global user config
# Or: Path(os.environ.get('VSCODE_APPDATA', Path.home() / '.vscode')) / 'mcp.json'
Environment
- macOS Darwin 25.2.0 (arm64)
- apc version 0.1.0
- Verified by running
apc mcp sync --all from ~/.openclaw/workspace and finding .vscode/mcp.json written there
Severity
High — The feature is silently broken for any user who doesn't always run apc from the same project directory.
Summary
The GitHub Copilot extractor and applier use relative paths for
.vscode/mcp.jsonand.github/copilot-instructions.md. This means the actual files read/written depend entirely on the current working directory whenapcis run — making the tool unreliable when invoked from different directories.Steps to Reproduce
Actual Behavior
CopilotApplier.apply_mcp_servers()writes to.vscode/mcp.json(relative)CopilotExtractor.extract_mcp_servers()reads from.vscode/mcp.json(relative)CopilotApplier.apply_skills()writes to.github/copilot-instructions.md(relative)CopilotExtractor.extract_skills()reads from.github/copilot-instructions.md(relative)apcwas invoked fromExpected Behavior
GitHub Copilot has a global MCP config location:
~/.vscode/mcp.json(VS Code user-level settings).apcshould use this absolute path for global MCP management, not a relative.vscode/mcp.json.Similarly,
.github/copilot-instructions.mdis project-scoped — for a global tool likeapc, there should either be a documented fallback path or a warning that Copilot instructions are project-scoped.Affected Code
Proposed Fix
Environment
apc mcp sync --allfrom~/.openclaw/workspaceand finding.vscode/mcp.jsonwritten thereSeverity
High — The feature is silently broken for any user who doesn't always run
apcfrom the same project directory.