Current Capabilities
This page lists what the current codebase actually implements.
ACP runtime
Implemented ACP-facing behavior:
initializeauthenticatenew_sessionfork_sessionload_sessionresume_sessionlist_sessionspromptset_session_modeset_session_modelset_config_option
The ACP adapter also emits:
- available commands updates
- current mode updates
- config option updates
- tool call start/progress updates
- permission requests for write approvals
Session model
Sessions are first-class and stored on disk.
Each session currently persists:
- session id
- workspace path
- active mode
- title
- human-readable chat history
- serialized model message history
- imported approval source sessions
Modes
Three modes exist:
Ask: read-onlyPlan: read workspace, write only under.vcode/plans/Agent: full edit mode, still gated by approvals
Mode state is represented both in the runtime and through ACP mode/config surfaces.
Model management
vCode currently supports:
- listing known model ids from
pydantic-ai - selecting a default model
- selecting per-mode model overrides
- exposing model state to ACP clients
Current storage:
.vcode/preferences.json.vcode/mcp.ymlwith JSON fallback.vcode/hooks.ymlwith JSON fallback
Capability stack
The runtime is assembled from native pydantic-ai capabilities:
Toolset(build_filesystem_toolset(...))PrepareTools(...)for mode-aware filesystem visibilityHooks(...)built from.vcode/hooks.ymlMCP(...)or stdio MCP toolsets from.vcode/mcp.yml
Workspace tools
Implemented local filesystem tools:
list_filesread_filewrite_file
Manual demo assets also exist in the repository:
scripts/demo_mcp_server.pyscripts/mock_hook_audit.pyscripts/mock_hook_snapshot.py
Current behavior:
- reads are plain text reads
- writes are mode-gated
Askmode hideswrite_filefrom the model throughPrepareTools- writes require deferred approval unless already allowed for the session
.vcode/.vcodeignorehides matching files from read/list
Approval system
Implemented today:
- session-scoped write approvals
- manual allow/deny commands
- importing approval preferences from another session
- ACP permission prompts with diff previews for writes
- native deferred approvals through
pydantic-ai - hook commands executed through
pydantic-ai Hooks
Not implemented yet:
- terminal approvals
- network approvals
- browser approvals
- multi-tool approval policies
- approval gating for hook command execution
Slash commands
Currently handled in the runtime:
/models/model/model <model-id>/model <ask|plan|agent> <model-id>/approvals/hooks/mcp/approve <tool> <target>/deny <tool> <target>/update-preferences <session-id>
Test coverage
The repository currently has tests for:
- session behavior
- ACP adapter behavior
- capability composition
- config loading
- approval persistence
- model command flows
- workspace read/write flows
.vcodeignoreread/list filtering