---
title: "Create workspace"
method: POST
path: "/workspaces"
tags: ["workspaces"]
---

# Create workspace

`POST /workspaces`

## Request body

- ProtoWorkspace
  - `channels` string[] — Channels lists the MCP servers opted in as channels for this workspace (from the --channels flag).
  - `client_id` string
  - `config` GithubComCharmbraceletCrushInternalConfigConfig
    - `$schema` string
    - `env` object — Env is a map of environment variables set on startup.
    - `hooks` object
    - `lsp` ConfigLSPs
    - `mcp` ConfigMCPs
    - `models` object — We currently only support large/small as values here.
    - `options` GithubComCharmbraceletCrushInternalConfigOptions
      - `attribution` ConfigAttribution
        - `co_authored_by` boolean
        - `generated_with` boolean
        - `trailer_style` 'none' | 'co-authored-by' | 'assisted-by'
      - `auto_lsp` boolean
      - `context_paths` string[]
      - `data_directory` string — DataDirectory is where Crush keeps per-project state such as the SQLite database and workspace overrides. Relative paths are resolved against the working directory; absolute paths are used verbatim. After defaulting the stored value is always absolute.
      - `debug` boolean
      - `debug_lsp` boolean
      - `disable_auto_summarize` boolean
      - `disable_default_providers` boolean
      - `disable_metrics` boolean
      - `disable_provider_auto_update` boolean
      - `disabled_skills` string[]
      - `disabled_tools` string[]
      - `global_context_paths` string[]
      - `initialize_as` string
      - `notifications` string
      - `progress` boolean
      - `skills_paths` string[]
      - `tui` ConfigTUIOptions
        - `compact_mode` boolean
        - `completions` ConfigCompletions
          - `max_depth` integer
          - `max_items` integer
        - `diff_mode` string
        - `scrollbar` string
        - `transparent` boolean
    - `permissions` ConfigPermissions
      - `allowed_tools` string[]
    - `providers` CsyncMapStringConfigProviderConfig
    - `recent_models` object — Recently used models stored in the data directory config.
    - `tools` ConfigTools
      - `glob` ConfigToolGlob
        - `timeout` -9223372036854776000 | 9223372036854776000 | 1 | 1000 | 1000000 | 1000000000 | 60000000000 | 3600000000000
      - `grep` ConfigToolGrep
        - `timeout` -9223372036854776000 | 9223372036854776000 | 1 | 1000 | 1000000 | 1000000000 | 60000000000 | 3600000000000
      - `ls` ConfigToolLs
        - `max_depth` integer
        - `max_items` integer
  - `data_dir` string
  - `debug` boolean
  - `env` string[]
  - `id` string
  - `path` string
  - `skills` ProtoSkillState[] — Skills carries the snapshot of skill discovery state at workspace creation time. Subsequent updates flow through the SSE event stream.
    - `error` string
    - `name` string
    - `path` string
    - `state` 0 | 1
  - `version` string
  - `yolo` boolean

## Response `200`

OK

- ProtoWorkspace
  - `channels` string[] — Channels lists the MCP servers opted in as channels for this workspace (from the --channels flag).
  - `client_id` string
  - `config` GithubComCharmbraceletCrushInternalConfigConfig
    - `$schema` string
    - `env` object — Env is a map of environment variables set on startup.
    - `hooks` object
    - `lsp` ConfigLSPs
    - `mcp` ConfigMCPs
    - `models` object — We currently only support large/small as values here.
    - `options` GithubComCharmbraceletCrushInternalConfigOptions
      - `attribution` ConfigAttribution
        - `co_authored_by` boolean
        - `generated_with` boolean
        - `trailer_style` 'none' | 'co-authored-by' | 'assisted-by'
      - `auto_lsp` boolean
      - `context_paths` string[]
      - `data_directory` string — DataDirectory is where Crush keeps per-project state such as the SQLite database and workspace overrides. Relative paths are resolved against the working directory; absolute paths are used verbatim. After defaulting the stored value is always absolute.
      - `debug` boolean
      - `debug_lsp` boolean
      - `disable_auto_summarize` boolean
      - `disable_default_providers` boolean
      - `disable_metrics` boolean
      - `disable_provider_auto_update` boolean
      - `disabled_skills` string[]
      - `disabled_tools` string[]
      - `global_context_paths` string[]
      - `initialize_as` string
      - `notifications` string
      - `progress` boolean
      - `skills_paths` string[]
      - `tui` ConfigTUIOptions
        - `compact_mode` boolean
        - `completions` ConfigCompletions
          - `max_depth` integer
          - `max_items` integer
        - `diff_mode` string
        - `scrollbar` string
        - `transparent` boolean
    - `permissions` ConfigPermissions
      - `allowed_tools` string[]
    - `providers` CsyncMapStringConfigProviderConfig
    - `recent_models` object — Recently used models stored in the data directory config.
    - `tools` ConfigTools
      - `glob` ConfigToolGlob
        - `timeout` -9223372036854776000 | 9223372036854776000 | 1 | 1000 | 1000000 | 1000000000 | 60000000000 | 3600000000000
      - `grep` ConfigToolGrep
        - `timeout` -9223372036854776000 | 9223372036854776000 | 1 | 1000 | 1000000 | 1000000000 | 60000000000 | 3600000000000
      - `ls` ConfigToolLs
        - `max_depth` integer
        - `max_items` integer
  - `data_dir` string
  - `debug` boolean
  - `env` string[]
  - `id` string
  - `path` string
  - `skills` ProtoSkillState[] — Skills carries the snapshot of skill discovery state at workspace creation time. Subsequent updates flow through the SSE event stream.
    - `error` string
    - `name` string
    - `path` string
    - `state` 0 | 1
  - `version` string
  - `yolo` boolean

## Other responses

- `400` — Bad Request
- `500` — Internal Server Error

---

[API](https://skmtc.dev/charmbracelet/apis/crush-api.md) · [All operations](https://skmtc.dev/charmbracelet/apis/crush-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/charmbracelet/crush-api/revisions/81bee9ef86c6/schema)
