Upload (Local to Remote)
When you runcatty new, your current directory is automatically zipped and uploaded to the remote session.
What Gets Uploaded
Your entire current directory, except:- Files matching patterns in
.gitignore - Default exclusions (see below)
Default Exclusions
These patterns are always excluded, regardless of.gitignore:
Upload Limits
| Limit | Value |
|---|---|
| Maximum size | 100 MB |
| Uploads per session | 1 |
Skipping Upload
Start a session without uploading:- Your workspace is too large
- You want an empty session
- You’ll clone a repo in the session instead
Sync-Back (Remote to Local)
Changes made by Claude in the remote/workspace directory are automatically synced back to your local directory in real-time.
How It Works
Supported Operations
| Operation | Description |
|---|---|
| Create | New files appear locally |
| Modify | Changed files are updated |
| Delete | Deleted files are removed locally |
Security
Sync-back includes safety measures:Path Validation
Rejects absolute paths and directory traversal (
../) attempts.Workspace Scoped
Only changes under
/workspace are synced.Local Boundary
Writes are confined to your current working directory.
Real-time
Changes appear immediately as Claude makes them.
Disabling Sync-Back
Disable for new sessions:Disabling sync-back means you’ll need to manually retrieve any files Claude creates or modifies.
Protocol Details
Sync-back uses WebSocket text frames with JSON messages:File Change Message (Server to Client)
| Field | Description |
|---|---|
type | Always "file_change" |
path | Relative path from workspace root |
action | "write" or "delete" |
content | Base64-encoded file content (for writes) |
Enable Sync-Back Message (Client to Server)
Acknowledgment (Server to Client)
Best Practices
Keep workspace under 100 MB
Keep workspace under 100 MB
Use
.gitignore to exclude large files, build artifacts, and dependencies. These can be regenerated in the remote session.Leave sync-back enabled
Leave sync-back enabled
The default behavior ensures your local copy stays in sync with Claude’s changes. Only disable if you have a specific reason.
Check .gitignore before upload
Check .gitignore before upload
Make sure your
.gitignore excludes sensitive files like .env with secrets. These are excluded by default, but verify your specific setup.Use version control
Use version control
Since files sync in real-time, use Git to track changes and revert if needed. Commit your work before starting a session.
