Skip to content
Back to skills

Coder File Transfer

BSecurity

Upload or download large files to/from a Coder CDE workspace using the coder CLI. Use when transferring files, directories, build artifacts, datasets, or binaries to a Coder workspace, when `rsync -e "coder ssh"` fails or desyncs, or when a copy over `coder ssh` hangs/corrupts. Triggers on "upload to coder", "copy files to workspace", "coder scp", "coder rsync", "transfer to CDE", "push files to my workspace", "coder config-ssh".

  • 3 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added September 24, 2026
ai-agentsrustbash

Works with

  • cli

Security analysis

B75/100
  • criticalAccesses sensitive system or user directories

Pro shows the line behind each finding and how to fix it

Scanned September 24, 2026

npx -y skills add OneDro1d/dark-factory --skill coder-file-transfer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Coder File Transfer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Coder File Transfer
[![Security: B — Skills Directory](https://www.skillsdirectory.com/api/skills/onedro1d-coder-file-transfer/badge)](https://www.skillsdirectory.com/skills/onedro1d-coder-file-transfer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: coder-file-transfer
description: Upload or download large files to/from a Coder CDE workspace using the coder CLI. Use when transferring files, directories, build artifacts, datasets, or binaries to a Coder workspace, when `rsync -e "coder ssh"` fails or desyncs, or when a copy over `coder ssh` hangs/corrupts. Triggers on "upload to coder", "copy files to workspace", "coder scp", "coder rsync", "transfer to CDE", "push files to my workspace", "coder config-ssh".
allowed-tools: Read, Bash(coder:*), Bash(rsync:*), Bash(scp:*), Bash(ssh:*), Bash(brew:*), Bash(mkdir:*)
---

# Coder Workspace File Transfer

Move large files to (or from) a Coder Cloud Development Environment reliably. The naive
path — `rsync -e "coder ssh"` — is broken on macOS. Use a `coder config-ssh` host alias
with a protocol-clean, PTY-free SSH channel instead.

## When to use

- Uploading a directory, dataset, build artifact, or binary to a Coder workspace.
- `rsync -e "coder ssh"` fails, desyncs mid-transfer, or hangs.
- A copy over `coder ssh` corrupts or never completes.
- You need a **resumable** transfer over a flaky dev tunnel.

## The one-liner

```bash
coder config-ssh                                          # one-time per machine
rsync -avP -e "ssh -T" /local/dir <workspace>.coder:/remote/target/dir/
```

## Instructions

1. **Generate SSH host aliases (one-time per machine/workspace):**
   ```bash
   coder config-ssh
   ```
   This adds host entries to `~/.ssh/config`. Note the alias for your workspace from the
   output — typically `<workspace>.coder` (e.g. workspace `Loom` → host `Loom.coder`).

2. **Confirm you have GNU rsync (macOS ships the incompatible `openrsync`):**
   ```bash
   rsync --version
   ```
   If it says `openrsync`, install GNU rsync:
   ```bash
   brew install rsync
   ```

3. **Ensure the remote target directory exists:**
   ```bash
   coder ssh <workspace> -- mkdir -p /remote/target/dir
   ```

4. **Transfer — preferred (resumable):**
   ```bash
   rsync -avP -e "ssh -T" /local/dir <workspace>.coder:/remote/target/dir/
   ```
   - `-a` archive, `-v` verbose, `-P` = `--partial --progress` → **resumable**.
   - `-e "ssh -T"` disables PTY allocation — **the essential fix**.

5. **Transfer — fallback (no resume):**
   ```bash
   scp -r /local/dir <workspace>.coder:/remote/target/dir/
   ```

6. **Download (reverse direction)** — swap the arguments:
   ```bash
   rsync -avP -e "ssh -T" <workspace>.coder:/remote/dir ./local/target/
   ```

## What NOT to do

- ❌ `rsync -e "coder ssh" src host:dst` — macOS `openrsync` desyncs against the remote
  GNU rsync; even with GNU rsync, `coder ssh`'s PTY corrupts the byte stream.
- ❌ Omitting `-e "ssh -T"` — the default TTY allocation breaks rsync/tar pipelines.
- ❌ Trusting the macOS built-in `rsync` — always verify `rsync --version` reports GNU.

## Why this works

`coder config-ssh` turns the Coder tunnel into a standard SSH host. Any TCP-clean SSH
tool (rsync, scp, sftp) then works directly, instead of being wrapped by `coder ssh`,
which forces a PTY. Removing the PTY (`ssh -T`) and using GNU rsync's protocol gives a
clean binary channel that survives large, resumable transfers.

## Reference

Full write-up with the failure matrix and a concrete Loom example:
`docs/coder-large-file-upload.md`.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…