Configuration and storage
Dline keeps durable state, runtime resources, user documents, and project capabilities under separate roots. Each location has its own owner and should not be merged into one configuration directory.
Storage locations
Section titled “Storage locations”State and data root
Section titled “State and data root”The default is ~/.dline/data/. It holds canonical settings, workspace state, profile metadata, and secrets:
~/.dline/data/├── globalState.json├── secrets.json├── settings/│ ├── settings.json│ └── api_profiles.json├── secrets/│ ├── api_keys.json│ └── provider_secrets.json└── workspaces/ └── <workspace-hash>/ ├── workspaceState.json └── settings.jsonDo not edit these files while Dline is running. Settings and profiles are updated through their owning repositories so that multiple VS Code windows do not overwrite one another with stale snapshots.
Resource home
Section titled “Resource home”The default is ~/.dline/. It holds resources such as provider metadata, caches, and Puppeteer data:
~/.dline/├── providers/├── cache/└── puppeteer/Documents root
Section titled “Documents root”User-facing task data and global capabilities live under the operating system’s Documents directory, normally ~/Documents/dline/:
~/Documents/dline/├── tasks/├── rules/├── workflows/├── skills/├── subagents/├── mcp/├── hooks/├── settings/│ └── mcp_settings.json└── checkpoints/DLINE_DOCS_DIR is the complete Dline documents root. When it is set, Dline does not append another dline directory.
Project capabilities
Section titled “Project capabilities”Repository-scoped capabilities use explicit project paths:
your-project/├── .agents/│ ├── rules/│ ├── workflows/│ ├── skills/│ ├── subagents/│ └── mcp/└── .agentignoreCommit the .agents/ resources and the .agentignore policy that you intend to share with collaborators, but keep credentials out of the repository. Workspace MCP descriptors reject inline secrets in sensitive fields and require environment-variable references instead.
Environment variables
Section titled “Environment variables”| Variable | Description | Default |
|---|---|---|
DLINE_DIR | Parent of the state and data root; Dline appends data/ | ~/.dline |
DLINE_HOME_DIR | Resource home for provider metadata, caches, and Puppeteer data | ~/.dline |
DLINE_DOCS_DIR | Complete documents root for tasks and global capabilities | dline under the system Documents directory |
DLINE_COMMAND_PERMISSIONS | JSON policy that restricts shell commands | unset |
Set path overrides before launching VS Code so that the extension host inherits them. For a fully isolated environment, set all three path variables; overriding only one does not isolate the others.
DLINE_COMMAND_PERMISSIONS
Section titled “DLINE_COMMAND_PERMISSIONS”Restrict which shell commands Dline can run:
export DLINE_COMMAND_PERMISSIONS='{"allow": ["npm *", "git *"], "deny": ["rm -rf *"]}'Format:
{ "allow": ["pattern1", "pattern2"], "deny": ["pattern3"], "allowRedirects": true}Rules:
denytakes precedence overallow.- When
allowis set, any command that does not match it is denied. allowRedirectscontrols shell redirects (>,>>,<) and defaults tofalse.
Related docs
Section titled “Related docs”Security notes
Section titled “Security notes”The current public extension surface does not provide a stable third-party plugin or lifecycle-hook installation API. The Hooks and Plugins pages linked above describe planned boundaries, not an installable contract.