the universal sandbox runtime for agents and humans. pocketenv.io
sandbox openclaw agent claude-code vercel-sandbox deno-sandbox cloudflare-sandbox atproto sprites daytona
7
fork

Configure Feed

Select the types of activity you want to include in your feed.

Remove -e from echo when writing files

+5 -8
+1 -4
apps/api/src/tty/index.tsx
··· 134 134 if (basePath !== "/" && basePath != ".") { 135 135 await mkdir(basePath); 136 136 } 137 - await sprite.execFile("sh", [ 138 - "-c", 139 - `echo -e '${content}\n' > ${absolutePath}`, 140 - ]); 137 + await sprite.execFile("sh", ["-c", `echo '${content}' > ${absolutePath}`]); 141 138 }; 142 139 143 140 const setupSshKeys = async (
+1 -1
apps/sandbox/src/providers/daytona/mod.ts
··· 56 56 if (basePath !== "/" && basePath != ".") { 57 57 await this.mkdir(basePath); 58 58 } 59 - await this.sh`echo -e '${content}\n' > ${absolutePath}`; 59 + await this.sh`echo '${content}' > ${absolutePath}`; 60 60 } 61 61 62 62 async setupSshKeys(privateKey: string, publicKey: string): Promise<void> {
+1 -1
apps/sandbox/src/providers/deno/mod.ts
··· 66 66 if (basePath !== "/" && basePath != ".") { 67 67 await this.mkdir(basePath); 68 68 } 69 - await this.sh`echo -e '${content}\n' > ${absolutePath}`; 69 + await this.sh`echo '${content}' > ${absolutePath}`; 70 70 } 71 71 72 72 async setupSshKeys(privateKey: string, publicKey: string): Promise<void> {
+1 -1
apps/sandbox/src/providers/sprites/mod.ts
··· 53 53 } 54 54 await this.sprite.execFile("sh", [ 55 55 "-c", 56 - `echo -e '${content}\n' > ${absolutePath}`, 56 + `echo '${content}' > ${absolutePath}`, 57 57 ]); 58 58 } 59 59
+1 -1
apps/sandbox/src/providers/vercel/mod.ts
··· 53 53 if (basePath !== "/" && basePath != ".") { 54 54 await this.mkdir(basePath); 55 55 } 56 - await this.sh`echo -e '${content}\n' > ${absolutePath}`; 56 + await this.sh`echo '${content}' > ${absolutePath}`; 57 57 } 58 58 59 59 async setupSshKeys(privateKey: string, publicKey: string): Promise<void> {