Files
coder/docs/admin/templates/open-in-coder.md
T
Kacper Sawicki 60e3ab7632 feat(site)!: add consent prompt for auto-creation with prefilled parameters (#22011)
### Summary

Workspace created via mode=auto links now require explicit user
confirmation before provisioning. A warning dialog shows all prefilled
param.* values from the URL and blocks creation until the user clicks
`Confirm and Create`. Clicking `Cancel` falls back to the standard form
view.

<img width="820" height="475" alt="auto-create-consent-dialog"
src="https://github.com/user-attachments/assets/8339e3bd-434f-4a04-9385-436bf95f49d7"
/>

### Breaking behavior change

Links using `mode=auto` (e.g., "Open in Coder" buttons) will no longer
silently create workspaces. Users will now see a consent dialog and must
explicitly confirm before the workspace is provisioned. Any existing
integrations or automation relying on `mode=auto` for seamless workspace
creation will now require manual user interaction.

---------

Co-authored-by: Jake Howell <jacob@coder.com>
2026-02-12 15:39:02 +01:00

4.3 KiB

Open in Coder

You can embed an "Open in Coder" button into your git repos or internal wikis to let developers quickly launch a new workspace.

How it works

To support any infrastructure and software stack, Coder provides a generic approach for "Open in Coder" flows.

1. Set up git authentication

See External Authentication to set up Git authentication in your Coder deployment.

2. Modify your template to auto-clone repos

The id in the template's coder_external_auth data source must match the CODER_EXTERNAL_AUTH_X_ID in the Coder deployment configuration.

If you want the template to clone a specific git repo:

# Require external authentication to use this template
data "coder_external_auth" "github" {
    id = "primary-github"
}

resource "coder_agent" "dev" {
    # ...
    dir = "~/coder"
    startup_script =<<EOF

    # Clone repo from GitHub
    if [ ! -d "coder" ]
    then
        git clone https://github.com/coder/coder
    fi

    EOF
}

Note

The dir attribute can be set in multiple ways, for example:

  • ~/coder
  • /home/coder/coder
  • coder (relative to the home directory)

If you want the template to support any repository via parameters

# Require external authentication to use this template
data "coder_external_auth" "github" {
    id = "primary-github"
}

# Prompt the user for the git repo URL
data "coder_parameter" "git_repo" {
    name          = "git_repo"
    display_name  = "Git repository"
    default       = "https://github.com/coder/coder"
}

locals {
    folder_name = try(element(split("/", data.coder_parameter.git_repo.value), length(split("/", data.coder_parameter.git_repo.value)) - 1), "")
}

resource "coder_agent" "dev" {
    # ...
    dir = "~/${local.folder_name}"
    startup_script =<<EOF

    # Clone repo from GitHub
    if [ ! -d "${local.folder_name}" ]
    then
        git clone ${data.coder_parameter.git_repo.value}
    fi

    EOF
}

3. Embed the "Open in Coder" button with Markdown

[![Open in Coder](https://YOUR_ACCESS_URL/open-in-coder.svg)](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace)

Be sure to replace YOUR_ACCESS_URL with your Coder access url (e.g. https://coder.example.com) and YOUR_TEMPLATE with the name of your template.

4. Optional: pre-fill parameter values in the "Create Workspace" page

This can be used to pre-fill the git repo URL, disk size, image, etc.

[![Open in Coder](https://YOUR_ACCESS_URL/open-in-coder.svg)](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace?param.git_repo=https://github.com/coder/slog&param.home_disk_size%20%28GB%29=20)

Pre-filled parameters

5. Optional: disable specific parameter fields by including their names as

specified in your template in the disable_params search params list

[![Open in Coder](https://YOUR_ACCESS_URL/open-in-coder.svg)](https://YOUR_ACCESS_URL/templates/YOUR_TEMPLATE/workspace?disable_params=first_parameter,second_parameter)

When using mode=auto with prefilled param.* values, Coder displays a security consent dialog before creating the workspace. This protects users from malicious links that could provision workspaces with untrusted configurations, such as dotfiles or startup scripts from unknown sources.

The dialog shows:

  • A warning that a workspace is about to be created automatically from a link
  • All prefilled param.* values from the URL
  • Confirm and Create and Cancel buttons

The workspace is only created if the user explicitly clicks Confirm and Create. Clicking Cancel falls back to the standard creation form where all parameters can be reviewed manually.

Consent dialog for automatic workspace creation

Example: Kubernetes

For a full example of the Open in Coder flow in Kubernetes, check out this example template.