{"_id":"@13rac1/openclaw-plugin-claude-code","_rev":"12-8a4357096062b2f53eef139af4b484d4","name":"@13rac1/openclaw-plugin-claude-code","dist-tags":{"latest":"1.1.0"},"versions":{"1.0.3":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.3","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.3","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"be94af5a4346e1a3e170e396c6ebb9ba795c3e62","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.3.tgz","fileCount":24,"integrity":"sha512-VBgCLQQIujicboMlcwQlc9mPuQaWjng/lpIgRJmrevWbKAiet2TFpHva0KU73a1gI1zeq4YdKSaaJLh5EHH3VQ==","signatures":[{"sig":"MEYCIQDHvsvrE29Ejj36+k/RUMP7UJPoucOL6h/j8/aXC4mYwwIhAMnEpSSCDK/5rRGnovUBTFQVP0aRGe/sZpr9bnhDCPnj","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":323807},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"73cc08b03f5504052c8cd64d067a956710f4a2f1","scripts":{"lint":"eslint src/","test":"vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"13rac1","email":"bderickson+npmjs@gmail.com"},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.8.0","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"25.5.0","dependencies":{"@sinclair/typebox":"^0.34.48"},"_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.3_1771198261379_0.32496211236965666","host":"s3://npm-registry-packages-npm-production"}},"1.0.4":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.4","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.4","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"772502360cdd06ac52f01b8597e7c3a656a31c18","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.4.tgz","fileCount":20,"integrity":"sha512-UBGb/LWn4lQ5r3HVn3Dj/lmEjZNw9ZT0n3vS/IuxR/Vh1gkUVzFl8GQpsoQGrjzZlPZ5/aTgGLUO/UklN/W/aA==","signatures":[{"sig":"MEUCIQDxohID6kpjrS44XxqwZIlfdVI2pZaoHaKqEmLCJTWi2gIgQvD2iHS29lfIDLOK9jJwHaj9VCVvc+Mdt1rmT6e4D3E=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.4","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":283135},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"79afb1512327d33a8815e94d10576ee15f1f825e","scripts":{"lint":"eslint src/","test":"vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.4_1771199754999_0.6260393170009566","host":"s3://npm-registry-packages-npm-production"}},"1.0.5":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.5","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.5","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"b90de34e72e8e8ba35f5fa77b325b3455e50eeaf","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.5.tgz","fileCount":21,"integrity":"sha512-kNG1VLjUqbqbtrMCaxQKakzTRNzl1CljU9yBXD6qwesheWb1lj4oc8xeGTXooRYCUrgckFHLEqK8yDowGTb7vw==","signatures":[{"sig":"MEUCIE2iZZrUihr1CFLDJI2baoBxoasiZimGS5R2Gm1tVQCPAiEAqwcxqK/TrU5jOqD79AD4P89X8fqfL9NUdSanojwKB+4=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.5","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":286140},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"93e13250e54220a9bb628b07aca55adf10b16365","scripts":{"lint":"eslint src/","test":"vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.5_1771200134281_0.09674262186986637","host":"s3://npm-registry-packages-npm-production"}},"1.0.6":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.6","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.6","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"3895fd30104d8048d63a770cafe02cdf2a2f5f48","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.6.tgz","fileCount":21,"integrity":"sha512-CHovQq7NLBZw6gAdalGL4LJEIzfVnvVcN7ZxxMFFTdq6gmODrPp0jzfXIuuMQwmGLsvuxjrtrUNzbgAbnfv58g==","signatures":[{"sig":"MEUCIQDbivy1Y05f69Bg+VBqx7GKNQ5knIwi5Zuj7yUNF8PUHgIgTeDYUGwpt6q9eSR2HcMBY2rn+z6oGGAS8i5HVLhkoJc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.6","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":261701},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"80c78b9d0df7ac7b801c177c939dc5c77269f005","scripts":{"lint":"eslint src/","test":"vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.6_1771208997551_0.866808293439898","host":"s3://npm-registry-packages-npm-production"}},"1.0.7":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.7","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.7","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"4a9780c3003759b1bdbc5c928d35b66b81bd45dd","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.7.tgz","fileCount":21,"integrity":"sha512-GZ1TOJUIVbTdberqlCGGhaK2yOL7ZEFhbRoeaH7/ZTJEP4WynGNwK/GjtIcFe+CpqbYFJOHOCEQ2FekVLH3LBg==","signatures":[{"sig":"MEUCIQCFPwGSFJbxY6xvL38sHarBJdGUfa8gNyvF1PHcswAMBgIgKWC4qdZma+WoEhjitQ36QnoXBDzWspcI37SPszKr6oM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.7","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":263240},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"61cb08ec537f7f6d18a93825975b729179986051","scripts":{"lint":"eslint src/","test":"vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.7_1771260893880_0.8639001569386977","host":"s3://npm-registry-packages-npm-production"}},"1.0.8":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.8","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.8","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"35ad838286915b625f5b0f3cbc3e5d7363707785","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.8.tgz","fileCount":21,"integrity":"sha512-rJJsZ0JSo7NVC70FahrR1jaX4oJtrIf14Q6Zcd9Rmo38HBt9u7imHCdlVh/rZgqpUEZ2fjEfjOlOv5yGAiPc/g==","signatures":[{"sig":"MEQCIADEAxFHPhxB6UyCZIk2UnxIWNP0ztmp9Y1d44ovMN65AiB/pUZaPFaerwCghGMIsOOc5PI36FQc/soPQVH4NIiezw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.8","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":263583},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"a6660551a82519eca672494f2a401089ecdfb559","scripts":{"lint":"eslint src/","test":"vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.8_1771262483647_0.15378018366449608","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.9","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.9","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"52757c7a24cbc4cd2657f55f1fd64eb1eb1461dc","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.9.tgz","fileCount":21,"integrity":"sha512-RjMhYhFJiMMAaN3q+sg1cYE6LQDW189xjIzIWjdH1z/Wo6znt5M1TBv6EYhtBT4T2SkHll7kL3ZNfOSO0+6oHQ==","signatures":[{"sig":"MEYCIQCIrBoaK3NX/fXH1sW5fzRJuPf7GoB658aBr6gy15lweAIhAPf/humMfu+tEelZ3BhehWwKoCL+I4uaZH2rezdDA2vB","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.9","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":263276},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"34034d447644ddbddb665529f984d14e819e2544","scripts":{"lint":"eslint src/","test":"vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.9_1771265018553_0.09654068591115572","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.10","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.10","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"9ef430bc453fdeafccd1bc801c34bf2a958422c6","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.10.tgz","fileCount":29,"integrity":"sha512-9jo7z+ixZQO9MuIzmSVJRyBdlvAMhf8c0mGB7y99jGGtH/RMqQK6jFiJRhb6J2pjZVvZPn5qunBLSe1MCIxuag==","signatures":[{"sig":"MEUCIGSRgvEjkTuUSJrLGQoW7EOixcrR+azS2WYAb7S92pQDAiEA6bPaR9IU3a8reg7Yp5q+JfVkO4G0kauB1m2XY29tN/8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.10","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":301267},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"096947b260dbe61c133f009b5b64253076cd564c","scripts":{"lint":"eslint src/","test":"vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.10_1771400921250_0.847757391115878","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.11","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.11","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"56364e000fdeaa8203d656e78f73cdfe4f08a1d1","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.11.tgz","fileCount":33,"integrity":"sha512-8jjSSlSA0AVYxPGIQAVX+o24xUwZQ03CExSFIHrVVRKhOU0M/Jy13y+hKoQ7u+Qa8JVfmfzPjB4spZkGuL+O7g==","signatures":[{"sig":"MEQCIBRR1N0BjvM+j5Mn0JtORYeXqKww/MaEBl7eU2DSW9YHAiBG0lHU4Zg+kCY4kX9jzfcrw7wNjvqIH4oKJ3yfCjV0+Q==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.11","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":316116},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"6fecef2365d5118e74060c1ff5b2908125825e47","scripts":{"lint":"eslint src/","test":"prettier --check src/ && eslint src/ && vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.11_1771656400451_0.7838588375441891","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.12","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.12","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"df390d559bd57a7dd65d690a008ed767bda04d0b","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.12.tgz","fileCount":33,"integrity":"sha512-5KsDY1uqRjhMuCts7HHHpvXfxgAscG6M5LclCVgKNy0y3HKhVoWB5c6s89K9AgojE4qVb8ZkQ5UzAOSN5/8hKw==","signatures":[{"sig":"MEQCIFtkIP4AAZ74gkyxJu/FEu0DOvWTbdJwFswWsdtOJCvWAiB01U4PnjmmbgBJw40Pao4UxjS8idSSt8eClYqAzkpbjw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.12","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":321925},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"d672bdf27fb498deaec5827a7056acb2b2b6c57c","scripts":{"lint":"eslint src/","test":"prettier --check src/ && eslint src/ && vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.6.2","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.13.0","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.12_1771878526755_0.5527829095583494","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.0.13","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","_id":"@13rac1/openclaw-plugin-claude-code@1.0.13","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"dist":{"shasum":"61128e30bdaee95a9f5c3911b55c3fcf4e42de08","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.0.13.tgz","fileCount":33,"integrity":"sha512-iZSnAvlCmrH/5/B+81F8Mtcu79U5XcsLD0NlWbdmTrJlzZ6Q2B/q8fBOueuJ53gA8pud6XdP65NPNISIrFrSdQ==","signatures":[{"sig":"MEQCIAhPILxnBHZOjuJ1aTZ3ndau+ystmHvmz1QOIYmg7c7TAiAFJkjFbjKoHCzQKOSUmGU58OAwGniTdvq0No06pt4QxA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.0.13","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"unpackedSize":324471},"main":"dist/claude-code.js","type":"module","types":"dist/claude-code.d.ts","engines":{"node":">=22.0.0"},"exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"gitHead":"e6688788424ee197df881ad25b23cba4db8c99e4","scripts":{"lint":"eslint src/","test":"prettier --check src/ && eslint src/ && vitest run --config vitest.config.ts","build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","clean":"rm -rf dist coverage","format":"prettier --write src/","lint:fix":"eslint src/ --fix","test:all":"npm test && npm run test:integration","test:watch":"vitest","format:check":"prettier --check src/","test:coverage":"vitest run --config vitest.config.ts --coverage","prepublishOnly":"npm run check","test:integration":"vitest run --config vitest.integration.config.ts"},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"openclaw":{"extensions":["./dist/claude-code.js"]},"repository":{"url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git","type":"git"},"_npmVersion":"11.11.0","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","directories":{},"_nodeVersion":"24.14.1","_hasShrinkwrap":false,"devDependencies":{"eslint":"^9.39.2","vitest":"^3.0.0","esbuild":"^0.27.3","prettier":"^3.8.1","@eslint/js":"^9.39.2","typescript":"^5.7.0","@types/node":"^22.0.0","@sinclair/typebox":"^0.34.48","typescript-eslint":"^8.55.0","@vitest/coverage-v8":"^3.2.4","eslint-config-prettier":"^10.1.8"},"peerDependencies":{"openclaw":">=2025.1.0"},"_npmOperationalInternal":{"tmp":"tmp/openclaw-plugin-claude-code_1.0.13_1775450943329_0.005168847227017048","host":"s3://npm-registry-packages-npm-production"}},"1.1.0":{"name":"@13rac1/openclaw-plugin-claude-code","version":"1.1.0","description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","type":"module","license":"Apache-2.0","author":{"name":"Bradley Erickson"},"repository":{"type":"git","url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git"},"bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"main":"dist/claude-code.js","types":"dist/claude-code.d.ts","exports":{".":{"types":"./dist/claude-code.d.ts","import":"./dist/claude-code.js"}},"scripts":{"build":"tsc && esbuild src/claude-code.ts --bundle --platform=node --format=esm --outfile=dist/claude-code.js --external:openclaw && cp openclaw.plugin.json dist/","clean":"rm -rf dist coverage","lint":"eslint src/","lint:fix":"eslint src/ --fix","format":"prettier --write src/","format:check":"prettier --check src/","test":"prettier --check src/ && eslint src/ && vitest run --config vitest.config.ts","test:coverage":"vitest run --config vitest.config.ts --coverage","test:integration":"vitest run --config vitest.integration.config.ts","test:all":"npm test && npm run test:integration","test:watch":"vitest","check":"npm run lint && npm run format:check && npm run build && npm run test:coverage","prepublishOnly":"npm run check"},"peerDependencies":{"openclaw":">=2025.1.0"},"devDependencies":{"@sinclair/typebox":"^0.34.48","@eslint/js":"^9.39.2","@types/node":"^22.0.0","@vitest/coverage-v8":"^3.2.4","esbuild":"^0.27.3","eslint":"^9.39.2","eslint-config-prettier":"^10.1.8","prettier":"^3.8.1","typescript":"^5.7.0","typescript-eslint":"^8.55.0","vitest":"^3.0.0"},"engines":{"node":">=22.0.0"},"openclaw":{"extensions":["./dist/claude-code.js"]},"gitHead":"ad35785798ec56e7a775c9c0e594c3770b33d83a","_id":"@13rac1/openclaw-plugin-claude-code@1.1.0","_nodeVersion":"24.14.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-oG5iYkql/ulFmiKc6m2321q7HaossdFqqS7OPsrBxVXavJZItvwaxsDJCTn9pabHn9GNPMzeJ12hK/v8K9WgQA==","shasum":"16b62702857b37298d3152ccf7da2fdb3664a5a2","tarball":"https://registry.npmjs.org/@13rac1/openclaw-plugin-claude-code/-/openclaw-plugin-claude-code-1.1.0.tgz","fileCount":33,"unpackedSize":325593,"attestations":{"url":"https://registry.npmjs.org/-/npm/v1/attestations/@13rac1%2fopenclaw-plugin-claude-code@1.1.0","provenance":{"predicateType":"https://slsa.dev/provenance/v1"}},"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIDUoEZ9yirz6QRgRLrFcho1rIdV+9jO3wR3B3WPS/AVNAiEAkQ/ni33q2bu9PIWYDZFB5m8gvLVgQhJd4J25TLL7k2Q="}]},"_npmUser":{"name":"GitHub Actions","email":"npm-oidc-no-reply@github.com","trustedPublisher":{"id":"github","oidcConfigId":"oidc:3a55084f-b87e-43a5-ab73-33ac47b1c3d5"}},"directories":{},"maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/openclaw-plugin-claude-code_1.1.0_1775452268057_0.895356276003634"},"_hasShrinkwrap":false}},"time":{"created":"2026-02-15T23:31:01.201Z","modified":"2026-04-06T05:11:08.570Z","1.0.3":"2026-02-15T23:31:01.508Z","1.0.4":"2026-02-15T23:55:55.154Z","1.0.5":"2026-02-16T00:02:14.434Z","1.0.6":"2026-02-16T02:29:57.725Z","1.0.7":"2026-02-16T16:54:54.041Z","1.0.8":"2026-02-16T17:21:23.814Z","1.0.9":"2026-02-16T18:03:38.721Z","1.0.10":"2026-02-18T07:48:41.391Z","1.0.11":"2026-02-21T06:46:40.612Z","1.0.12":"2026-02-23T20:28:46.909Z","1.0.13":"2026-04-06T04:49:03.459Z","1.1.0":"2026-04-06T05:11:08.235Z"},"bugs":{"url":"https://github.com/13rac1/openclaw-plugin-claude-code/issues"},"author":{"name":"Bradley Erickson"},"license":"Apache-2.0","homepage":"https://github.com/13rac1/openclaw-plugin-claude-code#readme","keywords":["openclaw","plugin","claude","claude-code","podman","container"],"repository":{"type":"git","url":"git+https://github.com/13rac1/openclaw-plugin-claude-code.git"},"description":"OpenClaw plugin for running Claude Code CLI in isolated Podman containers","maintainers":[{"name":"13rac1","email":"bderickson+npmjs@gmail.com"}],"readme":"# OpenClaw Plugin: Claude Code\n\n[![CI](https://github.com/13rac1/openclaw-plugin-claude-code/actions/workflows/ci.yml/badge.svg)](https://github.com/13rac1/openclaw-plugin-claude-code/actions/workflows/ci.yml)\n[![npm version](https://img.shields.io/npm/v/@13rac1/openclaw-plugin-claude-code.svg)](https://www.npmjs.com/package/@13rac1/openclaw-plugin-claude-code)\n[![License](https://img.shields.io/badge/License-Apache%202.0-blue.svg)](https://opensource.org/licenses/Apache-2.0)\n[![Node.js](https://img.shields.io/badge/node-%3E%3D22-brightgreen.svg)](https://nodejs.org/)\n[![TypeScript](https://img.shields.io/badge/TypeScript-5.7-blue.svg)](https://www.typescriptlang.org/)\n\n**Run Claude Code in secure, isolated containers with your Claude Max subscription.**\n\nAn [OpenClaw](https://openclaw.ai) plugin that executes [Claude Code](https://docs.anthropic.com/en/docs/claude-code) CLI sessions in rootless Podman containers. Let your AI agents delegate complex coding tasks to Claude Code without risking your host system.\n\n## Table of Contents\n\n- [Why Use This Plugin?](#why-use-this-plugin)\n- [FAQ](#faq)\n- [Features](#features)\n- [Requirements](#requirements)\n- [Installation](#installation)\n- [Configuration](#configuration)\n- [Authentication](#authentication)\n- [Job Completion Notifications](#job-completion-notifications)\n- [Registered Tools](#registered-tools)\n- [Security](#security)\n- [Development](#development)\n- [Container Image](#container-image)\n- [Releasing](#releasing)\n- [Troubleshooting](#troubleshooting)\n\n## Why Use This Plugin?\n\n### Use Your Claude Max Credits\n\nHave a Claude Max subscription? This plugin lets you use your existing subscription credits for agentic coding tasks instead of paying per-token API costs. Your OAuth credentials are securely passed to containerized Claude Code sessions.\n\n### Contain the Blast Radius\n\nClaude Code with `--dangerously-skip-permissions` can modify any file and run any command. This plugin contains each session in a rootless container with:\n\n- All Linux capabilities dropped\n- Configurable network isolation\n- Memory and CPU limits\n- Optional AppArmor profiles\n\nBad code, infinite loops, or accidental `rm -rf` stays inside the container. Your host system remains untouched.\n\n### Parallel Workspaces\n\nRun multiple Claude Code sessions simultaneously, each in its own isolated workspace. Sessions maintain state across interactions, enabling complex multi-step workflows without interference.\n\n### Works With Any OpenClaw Agent\n\nAny OpenClaw agent can use the `claude_code_start` tool to offload coding tasks. The orchestrating agent stays lightweight while Claude Code handles the heavy lifting in its own container.\n\n## FAQ\n\n### Why Podman instead of Docker?\n\n**Security.** This plugin runs AI-generated code with `--dangerously-skip-permissions` — the container is your only safety net. Podman is rootless by default: no daemon, no root process, no privilege escalation path. If an AI agent escapes the container, it lands in an unprivileged user namespace with no capabilities.\n\nDocker's default mode runs a root daemon. A container escape from a root-daemon Docker setup gives the attacker **full root access to the host**. Docker *can* run rootless, but it requires [additional setup](https://docs.docker.com/engine/security/rootless/) and isn't the default. Most Docker forks of this plugin skip that step.\n\nThe plugin supports `runtime: \"docker\"` for users who have configured rootless Docker, but Podman is strongly recommended.\n\n### Why use this plugin instead of the coding-agent skill?\n\nThe built-in [coding-agent skill](https://github.com/openclaw/openclaw/blob/main/skills/coding-agent/SKILL.md) is a prompt that teaches an OpenClaw agent to delegate coding tasks using the platform's existing `bash` and `process` tools. It's lightweight, supports multiple agents (Codex, Claude Code, Pi), and requires zero setup beyond loading the skill.\n\nThis plugin solves a different problem: **containment**. When Claude Code runs with `--dangerously-skip-permissions`, it can modify any file and run any command. The coding-agent skill runs those agents directly on your host (or in OpenClaw's sandbox), while this plugin runs each session in a rootless Podman container with all capabilities dropped, resource limits enforced, and `/tmp` mounted as tmpfs.\n\n**Use the coding-agent skill when:**\n- You want multi-agent support (Codex, Claude Code, Pi)\n- Quick setup matters more than isolation\n- You're already comfortable with OpenClaw's sandbox mode\n- Tasks are short-lived and don't need session persistence\n\n**Use this plugin when:**\n- You're running Claude Code with `--dangerously-skip-permissions` and want real containment\n- You need persistent sessions that survive across multiple interactions\n- You want structured job management (status, output pagination, activity detection, crash recovery)\n- You're running untrusted or experimental code and need hard resource limits\n\nThey can also work together: an agent could use the coding-agent skill for quick Codex tasks while routing longer Claude Code sessions through this plugin for isolation.\n\n## Features\n\n- **Isolated Execution**: Each Claude Code session runs in its own container with dropped capabilities\n- **Real-time Streaming**: Output is captured as it's generated using Claude Code's stream-json format\n- **Session Persistence**: Sessions maintain state across multiple interactions\n- **Dual Authentication**: Supports both API key and OAuth/Claude Max credentials\n- **Resource Limits**: Configurable memory, CPU, and PID limits\n- **AppArmor Support**: Optional AppArmor profile for additional security hardening\n- **Automatic Cleanup**: Idle sessions are automatically cleaned up\n\n## Requirements\n\n- [OpenClaw](https://openclaw.ai) >= 2025.1.0\n- [Podman](https://podman.io) (recommended) or Docker\n- Node.js >= 22\n\n## Installation\n\n### From npm\n\n```bash\nopenclaw plugins install @13rac1/openclaw-plugin-claude-code\n```\n\n### From GitHub Release\n\nDownload the latest release zip from [GitHub Releases](https://github.com/13rac1/openclaw-plugin-claude-code/releases) and extract to your plugins directory:\n\n```bash\nunzip openclaw-plugin-claude-code-*.zip -d ~/.openclaw/plugins/openclaw-plugin-claude-code\n```\n\n### Container Image\n\nThe plugin requires a container image with Claude Code CLI installed. Pull the pre-built image:\n\n```bash\npodman pull ghcr.io/13rac1/openclaw-claude-code:latest\n```\n\nOr build it yourself:\n\n```bash\npodman build -t ghcr.io/13rac1/openclaw-claude-code:latest .\n```\n\n## Configuration\n\nAdd to your `openclaw.json`:\n\n```json\n{\n  \"plugins\": {\n    \"enabled\": true,\n    \"load\": {\n      \"paths\": [\"path/to/dist/index.js\"]\n    },\n    \"entries\": {\n      \"claude-code\": {\n        \"enabled\": true,\n        \"config\": {\n          \"image\": \"ghcr.io/13rac1/openclaw-claude-code:latest\",\n          \"runtime\": \"podman\",\n          \"startupTimeout\": 30,\n          \"idleTimeout\": 120,\n          \"memory\": \"2g\",\n          \"cpus\": \"1.0\",\n          \"network\": \"bridge\",\n          \"sessionsDir\": \"~/.openclaw/claude-sessions\",\n          \"workspacesDir\": \"~/.openclaw/workspaces\",\n          \"sessionIdleTimeout\": 3600\n        }\n      }\n    }\n  }\n}\n```\n\n### Configuration Options\n\n| Option | Type | Default | Description |\n|--------|------|---------|-------------|\n| `image` | string | `ghcr.io/13rac1/openclaw-claude-code:latest` | Container image for Claude Code |\n| `runtime` | string | `podman` | Container runtime (`podman` or `docker`) |\n| `startupTimeout` | number | `30` | Seconds to wait for container to produce first output |\n| `idleTimeout` | number | `120` | Kill container after this many seconds of no output |\n| `memory` | string | `2g` | Memory limit for containers |\n| `cpus` | string | `1.0` | CPU limit for containers |\n| `network` | string | `bridge` | Network mode (`none`, `bridge`, `host`) |\n| `sessionsDir` | string | `~/.openclaw/claude-sessions` | Directory for session metadata |\n| `workspacesDir` | string | `~/.openclaw/workspaces` | Directory for session workspaces |\n| `sessionIdleTimeout` | number | `3600` | Cleanup idle sessions after this many seconds |\n| `apparmorProfile` | string | `\"\"` | AppArmor profile name (empty = disabled) |\n| `maxOutputSize` | number | `10485760` | Maximum output size in bytes (10MB default, 0 = unlimited) |\n| `notifyWebhookUrl` | string | `http://localhost:18789/hooks/agent` | OpenClaw webhook URL for notifications |\n| `hooksToken` | string | `\"\"` | Webhook auth token (must match OpenClaw `hooks.token` to enable notifications) |\n\n## Authentication\n\nThe plugin supports two authentication methods:\n\n### 1. OAuth / Claude Max (Recommended)\n\nIf you have Claude Max or enterprise OAuth credentials, place your credentials file at:\n\n```\n~/.claude/.credentials.json\n```\n\nThe plugin mounts your `~/.claude` directory directly into each container session, so OAuth token refreshes persist automatically.\n\n### 2. API Key\n\nSet the `ANTHROPIC_API_KEY` environment variable:\n\n```bash\nexport ANTHROPIC_API_KEY=sk-ant-...\n```\n\n**Note**: If both are available, OAuth credentials take precedence.\n\n## Job Completion Notifications\n\nThe plugin sends webhook notifications when jobs complete. No polling required.\n\n### Setup\n\nEnable webhooks in OpenClaw config (`~/.openclaw/openclaw.json`):\n```json\n{\n  \"hooks\": {\n    \"enabled\": true,\n    \"token\": \"your-secret-token\"\n  }\n}\n```\n\nThe plugin automatically reads the token from the OpenClaw config file. When a job completes, fails, or is cancelled, the agent receives a message with the job status, duration, and output size.\n\n### Sandbox Tool Allowlist\n\nIf you use OpenClaw's sandbox mode (`sandbox.mode: \"non-main\"` or `\"all\"`), webhook-triggered agents run in a sandboxed context with restricted tool access. To allow the agent to use this plugin's tools, add them to your sandbox tool allowlist in `~/.openclaw/openclaw.json`:\n\n```json\n{\n  \"tools\": {\n    \"sandbox\": {\n      \"tools\": {\n        \"allow\": [\n          \"exec\", \"process\", \"read\", \"write\", \"edit\", \"apply_patch\", \"image\",\n          \"sessions_list\", \"sessions_history\", \"sessions_send\", \"sessions_spawn\", \"session_status\",\n          \"claude_code_start\", \"claude_code_status\", \"claude_code_output\",\n          \"claude_code_cancel\", \"claude_code_cleanup\", \"claude_code_sessions\"\n        ]\n      }\n    }\n  }\n}\n```\n\nSee [Multi-Agent Sandbox & Tools](https://docs.openclaw.ai/tools/multi-agent-sandbox-tools) for more details on sandbox tool policies.\n\n## Registered Tools\n\n### `claude_code_start`\n\nStart a Claude Code task in the background. Returns immediately with a job ID.\n\n**Parameters:**\n- `prompt` (required): The task or prompt to send to Claude Code\n- `session_id` (optional): Session ID to continue a previous session\n\n**Returns:** `{ jobId: string, sessionId: string }`\n\n### `claude_code_status`\n\nCheck the status of a running or completed job.\n\n**Parameters:**\n- `job_id` (required): Job ID returned from `claude_code_start`\n- `session_id` (optional): Session ID\n\n**Returns:**\n- `status`: Job status (pending, running, completed, failed, cancelled)\n- `elapsedSeconds`: Time since job started\n- `outputSize`: Total output size in bytes\n- `tailOutput`: Last ~500 chars of output (for quick preview)\n- `lastOutputSecondsAgo`: Seconds since last output was produced\n- `activityState`: \"active\" (producing output), \"processing\" (CPU busy), or \"idle\"\n- `metrics`: CPU and memory usage\n- `exitCode`: Process exit code (when completed)\n- `error`: Error message (if failed)\n\n### `claude_code_output`\n\nRead or tail output from a job.\n\n**Parameters:**\n- `job_id` (required): Job ID\n- `session_id` (optional): Session ID\n- `offset` (optional): Byte offset to start reading from (for tailing)\n- `limit` (optional): Maximum bytes to read (default 64KB)\n\n**Returns:** Output content with `hasMore` flag for pagination\n\n### `claude_code_cancel`\n\nCancel a running job and stop its container.\n\n**Parameters:**\n- `job_id` (required): Job ID\n- `session_id` (optional): Session ID\n\n### `claude_code_cleanup`\n\nClean up idle sessions and their jobs.\n\n### `claude_code_sessions`\n\nList all active sessions with age, last activity, message count, and active job info.\n\n## Security\n\nThe plugin implements multiple layers of security:\n\n1. **Rootless Containers**: Uses Podman rootless mode by default\n2. **Capability Dropping**: All Linux capabilities are dropped (`--cap-drop ALL`)\n3. **Resource Limits**: Memory, CPU, and PID limits prevent resource exhaustion\n4. **tmpfs**: `/tmp` is mounted as tmpfs with `nosuid` (512MB, exec allowed for compilers)\n5. **Network Isolation**: Configurable network mode (can be set to `none`)\n6. **AppArmor**: Optional AppArmor profile support for MAC enforcement\n\n## Development\n\n### Setup\n\n```bash\ngit clone https://github.com/13rac1/openclaw-plugin-claude-code.git\ncd openclaw-plugin-claude-code\nnpm install\n```\n\n### Build\n\n```bash\nnpm run build\n```\n\n### Test\n\n```bash\n# Unit tests (mocked)\nnpm test\n\n# Integration tests (requires Podman)\nnpm run test:integration\n\n# All tests\nnpm run test:all\n```\n\n### Local Development\n\nLink the plugin for development:\n\n```bash\nopenclaw plugins install -l ./path/to/openclaw-plugin-claude-code\n```\n\n## Container Image\n\nThe included Dockerfile creates a Debian Bookworm-based image with:\n\n- Node.js 22\n- Claude Code CLI (npm global)\n- Go 1.22.5 + TinyGo 0.32.0\n- Python 3 with venv\n- Common dev tools: git, ripgrep, jq, curl\n\n### Building Multi-arch Images\n\n```bash\n# Single architecture (current)\npodman build -t ghcr.io/13rac1/openclaw-claude-code:latest .\n\n# Multi-architecture (arm64 + amd64)\nGITHUB_USERNAME=13rac1 ./scripts/build-and-push.sh --multi-arch\n```\n\n## Releasing\n\nReleases are automated via GitHub Actions when a version tag is pushed.\n\n### Prerequisites\n\n1. Configure `NPM_TOKEN` secret in GitHub repository settings\n2. Ensure you have push access to the repository\n\n### Release Process\n\n1. Update version in `package.json`\n2. Update `CHANGELOG.md` with release notes\n3. Commit the changes:\n   ```bash\n   git add package.json CHANGELOG.md\n   git commit -m \"chore: release v1.x.x\"\n   ```\n4. Create and push a version tag:\n   ```bash\n   git tag v1.x.x\n   git push origin main --tags\n   ```\n\nThe release workflow will automatically:\n- Run tests\n- Publish to npm with provenance\n- Build and push multi-arch container images to ghcr.io\n\n## Troubleshooting\n\n### Container image not found\n\n```\nError: Container image not found: ghcr.io/13rac1/openclaw-claude-code:latest\n```\n\nPull or build the container image:\n\n```bash\npodman pull ghcr.io/13rac1/openclaw-claude-code:latest\n```\n\n### No authentication available\n\n```\nError: No authentication available. Set ANTHROPIC_API_KEY or have ~/.claude/.credentials.json\n```\n\nEither:\n1. Set `ANTHROPIC_API_KEY` environment variable, or\n2. Place OAuth credentials at `~/.claude/.credentials.json`\n\n### Startup timeout\n\n```\nError: startup_timeout - No output within 30 seconds\n```\n\nThe container failed to start or produce output. Check:\n- Container image is valid\n- Sufficient system resources\n- Network connectivity (if `network: bridge`)\n\nIncrease `startupTimeout` if needed.\n\n### Idle timeout\n\n```\nError: idle_timeout - No output for 120 seconds\n```\n\nClaude Code stopped producing output. This may indicate:\n- Task completed but output wasn't captured\n- Claude Code is stuck\n- Task requires more time (increase `idleTimeout`)\n\n## License\n\nApache-2.0 - see [LICENSE](LICENSE)\n\n## Contributing\n\nSee [CONTRIBUTING.md](CONTRIBUTING.md)\n","readmeFilename":"README.md"}