{"_id":"@aporthq/aport-agent-guardrails","_rev":"29-5598bff133639be82ce562a0de7fbd88","name":"@aporthq/aport-agent-guardrails","dist-tags":{"latest":"1.0.36"},"versions":{"1.0.8":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.8","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.8","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"23ab77122d27cd74a8a84259384d514b7812555f","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.8.tgz","fileCount":237,"integrity":"sha512-5MqlM1JDrGIEDCCOPQ2sXVgEp82QI77IXjR0UQ9u9ck/bHRH4aRc/dS3jZfIQbIypmcoovncmyxyy60Mhhi1yg==","signatures":[{"sig":"MEYCIQCx7b1aQMKzByec9zWxQS1ZY0jXJYAAqojyKMxtoVrRwwIhALscJ/Na611O2givrBXYztV5WGZKfstudq0WcomgWuFE","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1700787},"engines":{"node":">=18.0.0"},"gitHead":"bc71818b905ea499d18018a940c062a3e5b15819","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.8_1771534431997_0.9956068074147477","host":"s3://npm-registry-packages-npm-production"}},"1.0.9":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.9","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.9","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"81f4384e20727f79da2d0472b1f626f7c39ed568","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.9.tgz","fileCount":241,"integrity":"sha512-Cnn+T8KOgHeGavnIk2xHNBrR5MNdNcjnKS0+xZ0i21zOGMBmQ1cPshqobbfoOhTX3SHd4FlFDVQtkWPs1K3N+w==","signatures":[{"sig":"MEUCICXtSTaf1rIbSu7/IBpw90E5KY+famT88VLwcd6bjG8kAiEA7Zqh2QTmd8ed8+ccdjsn2JhL8qehs6OFreQMqefzSaE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1731777},"engines":{"node":">=18.0.0"},"gitHead":"996672d66bc48b65bc6d3abfd092113c0c7f0743","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.9_1771544734488_0.12861288865398857","host":"s3://npm-registry-packages-npm-production"}},"1.0.10":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.10","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.10","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"b97a5ce828e007d0ce1fd4f24a319ff3d9ab569c","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.10.tgz","fileCount":241,"integrity":"sha512-NV8oCE5CR1xcUX5U2J0Oy5emeuPa8Jy9WFH8isF1touGXxCt5E/4X33QZlwiDvQMFpQI5mWS7IAy1qRpfP4R9A==","signatures":[{"sig":"MEQCIGxHhE/wnppJuoOpp5Ao3QkDOyBbhzgJgoZpTvoB6Gk2AiBkVDG+0GFkEEihIJbXJsOferJ1/xZrKg8oygSc6U9ShA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1732675},"engines":{"node":">=18.0.0"},"gitHead":"31beeae03291913d594014d89998180951db9f2b","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.10_1771546845783_0.3470993199278387","host":"s3://npm-registry-packages-npm-production"}},"1.0.11":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.11","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.11","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"2a77d08ee7bbe1d270c2e768ec8191c6d3abf3c9","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.11.tgz","fileCount":350,"integrity":"sha512-0q6Wi7ExRmQjVGAtNX7rz+ARE0owJLNCdjR/WJY/HYUiZvVhz+pi9TA4yePfe0c18iJJOLG4vMXVHBGOAeQxWw==","signatures":[{"sig":"MEQCICOTWvfEacAMRd6WmMvEovGk+7hdS9lR0BSw+kcFApiAAiAjKhYtMgaqn0MONcWvDklXTa2+xUIWbcqw1sT9lN1Yyg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4340135},"engines":{"node":">=18.0.0"},"gitHead":"3f32f821f5305cdd4ea16c90a9771731816730b6","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.11_1772425956162_0.5366918949023594","host":"s3://npm-registry-packages-npm-production"}},"1.0.12":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.12","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.12","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"95e4218d572e776b3a36b6dd0a7f6c9405ab5993","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.12.tgz","fileCount":350,"integrity":"sha512-4XaawiTg7OpLW+hkymz7HtiH/iiHoVfzL8/kErguhunjxwSA12uDE+ihqwfaJT8e/9gm0AdPw6fwOuCySAl/TA==","signatures":[{"sig":"MEYCIQCnC3ABd7xNPEUpa78c6pEMue1r9ws8E1p/f6iT+mPRTwIhAJU0wxYu8OwbvDTKXwSNxlhaG2AgXsjp3MuGgvaHK6Vq","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4346705},"engines":{"node":">=18.0.0"},"gitHead":"bbb7812ef930961b00aeb143fceaab6ee02936c6","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.12_1772442926417_0.6881808795265749","host":"s3://npm-registry-packages-npm-production"}},"1.0.13":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.13","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.13","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"30ba860be8ef88fedf9d785a2adb059ade71cd70","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.13.tgz","fileCount":354,"integrity":"sha512-6UjRCbdrK4OeJSceH/Rarb4GG/+8ZUo88mrwvxpoCR3f7a8Slxz7lQKTiaa2Cd4D4GT2/Dw1PD6m4miMcOlR4Q==","signatures":[{"sig":"MEUCICUEyRiBDncR+0GerXTRR2Xn/qZFle6c4Pml7LYZb9PHAiEAsD3pFFJct00drBLlb/BDlhfhbrXfTKChi1XLqPzPo0g=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4398796},"engines":{"node":">=18.0.0"},"gitHead":"1ff1f6d660dff7ecb54545529939a799bca6a49f","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.13_1773230692667_0.2755689279300828","host":"s3://npm-registry-packages-npm-production"}},"1.0.14":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.14","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.14","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"92c1a40dba107e4160237e6d3ea3030def44ad41","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.14.tgz","fileCount":354,"integrity":"sha512-w8em03N7zkOToXTeeRYt59ipl0PvoXccfW7be89YXlDsAfmSwRVuDcdZ7aOhSxYp22Z9b2EdDwLB3zz8SxEAtg==","signatures":[{"sig":"MEYCIQCDoY6z8TehjLwsqIIoCis8OlmL7gWjR+CRof0M0NLrYQIhAIi2RC6zawmvOURD7yoc6DvP+N2KxXifgbQCf8lJVRlQ","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4406554},"engines":{"node":">=18.0.0"},"gitHead":"d4705bd1a48e4ffa3e70229530e6c63f168eb372","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.14_1773237459124_0.13155387700538168","host":"s3://npm-registry-packages-npm-production"}},"1.0.15":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.15","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.15","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"f13a60a774ed076780dbdceef18206cb1c7b8218","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.15.tgz","fileCount":354,"integrity":"sha512-DiLKEGtFer5jrhRxwoivsQm/SfI38+TWpgMJ/eDpur/pALBdnNkrPeeEfM4nUM91oBMMYpbaU5xdEopGzSnM1Q==","signatures":[{"sig":"MEYCIQD30ykwpO6N8EE/gYHt14acho/vxoumAQPnmwNHDMhWkAIhAN6CGOaWi93rUG4LWSbNIOpNAU1lstH9m+uzBayUEr2i","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4400634},"engines":{"node":">=18.0.0"},"gitHead":"dca2071e049a660260aab6b9f53ba1a464e84e8e","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.0","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.15_1773343852366_0.9187700533478953","host":"s3://npm-registry-packages-npm-production"}},"1.0.16":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.16","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.16","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"5e5ee4dcdac2622777a9a47d31587e410239a3e5","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.16.tgz","fileCount":358,"integrity":"sha512-sZPL8HiDN+6yPQPwpZNtEmB1bjuDLnq2RHK/6VhjAx7KZv81Np3thcIEy6RDXwRiqrGVfKV/muIHSyCgy211vg==","signatures":[{"sig":"MEYCIQDfSK784f5+CMmTyPdpY+qzGyY9+AM0IbFCHP89AN3W/QIhAKkRuxgmiAJVsT6iQtNtusUGRYnh5nr47GPIpRfFxaFH","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4420816},"engines":{"node":">=18.0.0"},"gitHead":"e11d54a0982815b0fc76857a4e9349c47292e702","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.16_1774148374010_0.323100836298831","host":"s3://npm-registry-packages-npm-production"}},"1.0.17":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.17","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.17","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"620dbe97aaa770df4ad71c7d27102ebcc159db4d","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.17.tgz","fileCount":358,"integrity":"sha512-UGIVKF16PdmCqpFd397DA22eCMdPcPA7Z2ZAR2y0bXdIav/YT5mlGxghGL0dStcrmjKNXJKQ9JPl3eSe889Q4g==","signatures":[{"sig":"MEYCIQCJ0VDVlWavRx5QEqR0BDxuTj5hVq2bJREZyt8WdE/XEQIhAIamUZRuIthFilSDiv4V6LrYVv2ih+j+eq8AdaLyf2Xz","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4423635},"engines":{"node":">=18.0.0"},"gitHead":"a4a33e58c13be189f6f0644c00fa193d63697215","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.1","dependencies":{},"publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.17_1774150631502_0.9443422699780393","host":"s3://npm-registry-packages-npm-production"}},"1.0.18":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.18","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.18","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"273116859c5fc5607f2ca60995663a139bd1dcc2","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.18.tgz","fileCount":328,"integrity":"sha512-4Is84Pm20uJaOfRlukfS69LoxtLyyi39fYndaoOla72hNG23tHGfKUUDjyjcHXnpo+NGDeOVo2KJ6HNl0Pn2jw==","signatures":[{"sig":"MEUCIQCpg//wH7Tpky8TdBT4SI1uKeyMvlKO6IQlfwY5m61knAIgLz1Vs5u76LQR57GZGyYW9KKLBNHILZmXNBuNSBh+Xy8=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4662152},"engines":{"node":">=18.0.0"},"gitHead":"ac9fd2631efce759af4ac810504c0f2857acd026","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.18_1774346059705_0.11270100248521842","host":"s3://npm-registry-packages-npm-production"}},"1.0.19":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.19","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.19","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"0515ce7d7ca53196b6184693bfb5817a0da07598","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.19.tgz","fileCount":331,"integrity":"sha512-DVinmEJ6EKCoAvwfZWrBDI7GN7xNRASW8CxBfNTLkwoxaY3l2dXLPpZyygLQ+vtwf8vGs028PM8pAEAu+WLY4g==","signatures":[{"sig":"MEQCIFyTjqu22iAkNUzgvav5qd+eS2z5XvBkrmVT4CcSCouEAiAYKx6u/BS+O6V7vN+Q6GLQuC9gb3kKqRF/Z0Z7uKnuuw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4662780},"engines":{"node":">=18.0.0"},"gitHead":"65f7eb3754e39607a4939f8b9bf1b001c53ffb58","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.19_1774352279579_0.3525617667527643","host":"s3://npm-registry-packages-npm-production"}},"1.0.20":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.20","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.20","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"f53afa0c3c9eea45a8c49509cff930c08dd1ed11","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.20.tgz","fileCount":334,"integrity":"sha512-pmPHKlsxAS2zR/Jv94bC0AFD1ihFHa0PVPrSjOCUcQhlUZv9TM9uerHrp4luydgrALnSGswsXFq5DqCAIhuCog==","signatures":[{"sig":"MEUCIDfB3/15bu3ySVGqvnAZVKLSBVGshTpmReWuMEJ8CzKOAiEA1Cf7ujIIm+f4/rVgCa50pdthiqh5Pw2HcCwoZtMFz3M=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4679215},"engines":{"node":">=18.0.0"},"gitHead":"19b4ce775b65993dedddab40ff674a9b3b70cc87","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.4","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.20_1774518895265_0.4089940492131223","host":"s3://npm-registry-packages-npm-production"}},"1.0.21":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.21","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.21","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"99228c4dad4ce34e3e3fbbc453f20e3c1e154b37","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.21.tgz","fileCount":338,"integrity":"sha512-p54OmjziTlBG/EHLy6WIFvkdwo+4rTkcfko/RFCTX9OXZAbEwIW/mHHuMB8bVEimWzVdfwkzvqvbzRp1zliYDg==","signatures":[{"sig":"MEYCIQCzh59GToI9/WfmC6s8cIaj3KUp+AhQFpAOP41PHNjywQIhAII1zeIU8LwcrhF2sEywDSOPumQbU+B4u5SoMj5NUai2","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4683997},"engines":{"node":">=18.0.0"},"gitHead":"223a31a8074b92d7e8d6532992dcd18404bd41f7","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.7","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.21_1775971527298_0.9529219841110983","host":"s3://npm-registry-packages-npm-production"}},"1.0.22":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.22","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.22","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"00d3750cce2542f484042281912ff57c317b5ea9","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.22.tgz","fileCount":341,"integrity":"sha512-XghKUIXRkXDLVse1F8RFNqvZ4g4teuer31K0JOtG47YvvgDv5Wmg/+EpwyEGCTyBiYLlIHeOZ1EumGMUwqE2/g==","signatures":[{"sig":"MEYCIQDQ1w3xZJgiuoEmnoqr1gzh/LLmgUUgIXLJcUm/j0tVgQIhAPNtPfSMvwAp+Olodnzq6hC+iHWDZxF6yXKa9jMJ2+ua","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4624476},"engines":{"node":">=18.0.0"},"gitHead":"16d847366fc4eface161f4a1242ecad16650e6cd","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.7","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.22_1776086717290_0.29779013759515016","host":"s3://npm-registry-packages-npm-production"}},"1.0.23":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.23","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.23","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"fde8872ed612404cd1a961d8625511da409b0e64","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.23.tgz","fileCount":341,"integrity":"sha512-QkSLSJsvsqbLJupPaLH4sFxJNTPjTUHmEv3nAyv2zQK/idCbFOFFdkTE+2t/i+TR0Il4gaLeuOL+peQl7QyQ0Q==","signatures":[{"sig":"MEUCIGXsVLC4xKzUpPvjKVQ+1kFA5VLCpx7yOi/mheLcwwFWAiEAgbI/n96rav3MjBDE9v9aMjwSZzHH7TdcKgPBRl0uR+w=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4633025},"engines":{"node":">=18.0.0"},"gitHead":"77cb40bf2857457154118971c91a4f5dfd2226d2","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.7","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.23_1776139553642_0.5494344026964579","host":"s3://npm-registry-packages-npm-production"}},"1.0.24":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.24","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.24","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"a318ec97c1e622860946b097465904d82c376644","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.24.tgz","fileCount":344,"integrity":"sha512-WSrhmRomuPqJpool7tVKaxfqxxgGFH4p3m5kZa8nZbWQnGtG6RFLoWIOsK6bZk8Yuw7TFtzHIYCKJB4xlB697Q==","signatures":[{"sig":"MEQCIAs2pkYM2nkXLx6oVif5MinG+CVYUCv4E44rpUl1wC3/AiAnQKp5p8wbfht2hDMGNSjsaA2tQmW2Ry/mjJmiXod6MA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4646964},"engines":{"node":">=18.0.0"},"gitHead":"34223164eb327f055a59557df3661e10b8c1eb22","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.7","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.24_1777474786795_0.7927179479096826","host":"s3://npm-registry-packages-npm-production"}},"1.0.25":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.25","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.25","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"b20eccad56a8d0c203554de1a470179070e0d0dc","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.25.tgz","fileCount":344,"integrity":"sha512-K34knNyNtmpDRG+ALOd3+oUxklkVgIORissh0EwPyVIzTRIuA+j5PipRRxiw+XAsB9IvYigXW4x/4Vpq3AA5Zw==","signatures":[{"sig":"MEUCIAx42Rd34mhHDzXwOIfaFoFUa77YwctNOguFJOjdkEiEAiEA8XJfvOI8Yperw1uA6ZYGw1ftXKR/i36RD9of8a6mLaw=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4647005},"engines":{"node":">=18.0.0"},"gitHead":"0c48497f304ec7ee34b3caf9fae4f9e531e71e8c","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.7","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.25_1778002314958_0.26273875121644896","host":"s3://npm-registry-packages-npm-production"}},"1.0.26":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.26","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.26","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"9e5bc1b8c53510a3e813bbf1da82cba87ac842cc","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.26.tgz","fileCount":346,"integrity":"sha512-RZ6ie8PgXts1NcQG+IpnBMgoHWpTfLGYnAtjcx9DMPuwUALp0s0VSSwjuAvUj990X8mi5FycOQy0+qSWkuTaTg==","signatures":[{"sig":"MEYCIQDD81RSzWt8xKOoaO/sS351hLh3ttaGpYFGdqFU/njtfwIhAOl12LgW9UoU6NVRpmwp4XDdSrFWLMnIkCcyv85b+Jzw","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4682206},"engines":{"node":">=18.0.0"},"gitHead":"d146e09d7c3bc9d0c4a5121e8b9737f30a492c0d","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.7","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.26_1778014169546_0.8677804902463815","host":"s3://npm-registry-packages-npm-production"}},"1.0.27":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.27","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.27","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"c634cc7147f7bdc04dd8c1173a47a0fa65376bf5","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.27.tgz","fileCount":348,"integrity":"sha512-AO3IQktV9XqdSWhYf4TVekzW6qK7rpTQDk7uHqfCtlVgKQmSk3gKRCZwJ1Tjzw3Qz0XlHkaehC30zWKC3m7IaA==","signatures":[{"sig":"MEYCIQCJOgA2Hiso9NlhdbhAZQ5Kv9p2etBb5VtTCxEa1NUIEgIhAOi7VLxTIOkh/ozqTzHUqP3WR0cL1tZ+22r9d7WD9Iu5","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4700937},"engines":{"node":">=18.0.0"},"gitHead":"911903c5dbe7d00565635793f4111535d77011fc","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.7","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.27_1779371331472_0.8382755077923836","host":"s3://npm-registry-packages-npm-production"}},"1.0.28":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.28","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.28","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"a645e4c2302d332406151f5773cec5b09ddc678b","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.28.tgz","fileCount":350,"integrity":"sha512-dBh7OpNmdbz0L4MWTnuqlRwFaOn88IiHIEUKjxVHmN54N9fMFmLFzdnoQhBiMc8Zrh9CQEt8VRbqyPCDr5Nkgw==","signatures":[{"sig":"MEQCIFwzaji1GWHuuG8r2MuZUPTnAO/IgbinhNpdZmBm6ug9AiB5BudR/HPh7vjBXEZtB9nYBjT5BW+S+kYLqSir+nV+aA==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4719099},"engines":{"node":">=18.0.0"},"gitHead":"c1e35020ed9b3f92fd70b0fd590a76891ba10e74","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.8","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.28_1779971137300_0.31026125424875595","host":"s3://npm-registry-packages-npm-production"}},"1.0.29":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.29","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.29","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"f61df4019dc3f759dbb90a4ff2154a058746ec45","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.29.tgz","fileCount":351,"integrity":"sha512-WLcVn9r8SVAKjPFIHdvSQIQy+ul7bCZqEOFNVmni1oLBlbbPWE7mKcXl/pj/49tXNC1eSQGil9Yh9vYFhW7xLg==","signatures":[{"sig":"MEUCIGjTp2DekCub7Vg9i+ME3nvOukDlshIkwBQWHMmhJsagAiEAzj4aUTGv8ZA3mqKC1o1V23w44TvMy6Zdk/FvNjh/5oY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":4724942},"engines":{"node":">=18.0.0"},"gitHead":"8d758129db008d1e85a3bbe274b1aa0962fd4253","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.8","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.22.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.29_1779974809857_0.2662604577354135","host":"s3://npm-registry-packages-npm-production"}},"1.0.30":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.30","keywords":["openclaw","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.30","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"4da82eaff8a5d02b67fe82f69301326e32b9a182","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.30.tgz","fileCount":257,"integrity":"sha512-RJDqBqZt5iM3IRDsYEHYixLSu9HlJ4PPaZWqfZelU1iNP1vZgyCBg3dHGY559SplM99b7/M49Tyy9aur12COAw==","signatures":[{"sig":"MEYCIQCWWEtEkdiWSjaNcaEj/umewyqMz2RNKgOW/oKTsCcvbwIhALX4qzecQGwGODHhcfK0VmzITR33xR22xc3tFN21hu06","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1725910},"engines":{"node":">=18.0.0"},"gitHead":"b037c55c10f6f5e2a0a7c73bce06dcbb978dd8a4","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.8","description":"Policy enforcement guardrails for OpenClaw-compatible agent frameworks","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.30_1787452861775_0.7246157159947517","host":"s3://npm-registry-packages-npm-production"}},"1.0.31":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.31","keywords":["openclaw","github-actions","repository-guard","claude-code","cursor","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.31","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"b8086d733836a09de485fda0200af8d23d14bae4","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.31.tgz","fileCount":263,"integrity":"sha512-izFamnZnKpNQ1v+rdjBbWptNVm4q9uKPT4ADu6rWENjbHuwRHHjKfwIavd9e7SJayF00ouUnkYd7gJdnm+gPVg==","signatures":[{"sig":"MEQCIHQNCkKNEtTCx6F5QacdDAAYFtypUZiMkk00MSn0y1XoAiAKs7hL7gm89j57qQVsGxr0YuR1Cjdat4gYmLnzISDxzg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1808813},"engines":{"node":">=18.0.0"},"gitHead":"ad99699143eb69c405ca71b84a337698fafd5459","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"node scripts/normalize-changeset-bumps.mjs && CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.8","description":"APort Repository Guard and pre-action authorization guardrails for GitHub, Claude Code, Cursor, OpenClaw, LangChain, CrewAI, DeerFlow, and n8n","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.31_1788563612380_0.7999531694636994","host":"s3://npm-registry-packages-npm-production"}},"1.0.32":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.32","keywords":["openclaw","github-actions","repository-guard","claude-code","cursor","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.32","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"7a7670512c4eb087dbffd182a6088a283b8ad69c","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.32.tgz","fileCount":263,"integrity":"sha512-VvpTKqNW1RopbMLRMRKNi8DtAbuJS/0ES+E5L2ZJ/elCn8DMczzSNuJ8q5NGuPhaeE4MQXiiFanjJESjI4PR9w==","signatures":[{"sig":"MEYCIQCwcybMHZKC+usej6BjCJW2mLXzzuuAK6Fqr2oh3YTEBAIhALiDtqCEpTog56G6svoT47p++z/w6lrFpoXgjEPMb10U","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":1818755},"engines":{"node":">=18.0.0"},"gitHead":"14470a70b0575ee0aa9fcf7decd4ad23ada4808b","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"node scripts/normalize-changeset-bumps.mjs && CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","prepush:check":"bash scripts/pre-push-check.sh","prepublishOnly":"npm run build 2>/dev/null || true","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.8","description":"APort Repository Guard and pre-action authorization guardrails for GitHub, Claude Code, Cursor, OpenClaw, LangChain, CrewAI, DeerFlow, and n8n","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.32_1788731145161_0.9557789659866052","host":"s3://npm-registry-packages-npm-production"}},"1.0.33":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.33","keywords":["openclaw","github-actions","repository-guard","claude-code","cursor","codex","gemini-cli","goose","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.33","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"40f8912eb8ad4b6d34ae673869d05265947b53f1","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.33.tgz","fileCount":278,"integrity":"sha512-7Sgtes+zewykS+IFZ/foXIxJEIE76t17RcyPJLZwgaPW9mtl6K3TJgLjSt89uqFZmgrDJTtTkKjQakfvtJVKzA==","signatures":[{"sig":"MEQCIGTl3ozKeNSUPW3E1T1/55nosrtCA7hF2hUBHpDpaEwZAiB2e6S2y8YTCm0WpxhjGiwp9mFFzzq4DR027U9BgiaCxg==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEYCIQC6H7EZGoDT/FBeEMMEmX5xFn2CqhO+QpTqN9jmLKMYFQIhAO0kGoxh7xoCxCf6llHpzWP34M+63jpvp9/ovyA8C2SX","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2055002},"engines":{"node":">=18.0.0"},"gitHead":"ca69acdeb7b25a3e4e44fa20de1352d45adefb80","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"node scripts/normalize-changeset-bumps.mjs && CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","sync-version":"node scripts/sync-version.mjs","local-pr-gate":"npm run local-pr-audit && npm run local-pr-review","prepush:check":"bash scripts/pre-push-check.sh","local-pr-audit":"npm run prepush:check","prepublishOnly":"npm run build 2>/dev/null || true","local-pr-review":"npm run local-codex-review","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","local-codex-review":"bash scripts/local-codex-review.sh","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.8","description":"APort Repository Guard and pre-action authorization guardrails for GitHub, Claude Code, Cursor, Codex, Gemini CLI, Goose, OpenClaw, LangChain, CrewAI, DeerFlow, and n8n","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.33_1789503663682_0.8556448494401061","host":"s3://npm-registry-packages-npm-production"}},"1.0.34":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.34","keywords":["openclaw","github-actions","repository-guard","claude-code","cursor","codex","gemini-cli","goose","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.34","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"35104c22eb22166fdf66824b0882aac01c0b0073","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.34.tgz","fileCount":285,"integrity":"sha512-y9PpuDhiB6xc+z5TXWnh9qAJkoRDLMbE7xpewJCiWoNFuVj+A9nVxGjdr0h5WWU93TrT1Nu/Y6LuARgRYlPDGg==","signatures":[{"sig":"MEUCIFYO8goj2JwCirseqfZR6cMpJBJCEE/N8PIggeE0VuWhAiEAhc7gh7XWzlk1q7qODoQGKvKNzCanwsdGxi0o25yvjlM=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIQCAmMOUZw2hreXNgHsyZbdfJMWe13e+l43qqB5qYbI5PQIgJV1MONuM7Gn+hkKQbkz9z9gyigw2lx0DA9nmYavzFEE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2357636},"engines":{"node":">=18.0.0"},"gitHead":"b2a6cd0052b736d1d8073a4c6637ee9ad522c8b0","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"node scripts/normalize-changeset-bumps.mjs && CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","prepush:full":"APORT_PRE_PUSH_LEVEL=full bash scripts/pre-push-check.sh","sync-version":"node scripts/sync-version.mjs","local-pr-gate":"npm run local-pr-audit && npm run local-pr-review","prepush:check":"bash scripts/pre-push-check.sh","local-pr-audit":"npm run prepush:check","prepublishOnly":"npm run build 2>/dev/null || true","local-pr-review":"npm run local-codex-review","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","codex:tool-surface":"bash scripts/check-codex-provider-tool-surface.sh","local-codex-review":"bash scripts/local-codex-review.sh","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.8","description":"APort Repository Guard and pre-action authorization guardrails for GitHub, Claude Code, Cursor, Codex, Gemini CLI, Goose, OpenClaw, LangChain, CrewAI, DeerFlow, and n8n","directories":{},"_nodeVersion":"22.23.2","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.34_1790603936868_0.06914922913242649","host":"s3://npm-registry-packages-npm-production"}},"1.0.35":{"name":"@aporthq/aport-agent-guardrails","version":"1.0.35","keywords":["openclaw","github-actions","repository-guard","claude-code","cursor","codex","gemini-cli","goose","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","_id":"@aporthq/aport-agent-guardrails@1.0.35","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"dist":{"shasum":"a976e00f2c191ebf89b1637f0c7995fef7320370","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.35.tgz","fileCount":286,"integrity":"sha512-6FfdzWorEU0H4BJiu2ZkUcmSJmHAj9eq0xx5QCYuvD67Rpjzi3eCl7tJP/FUqXamjMdmUsJLoj3BzP27/pvuZg==","signatures":[{"sig":"MEUCIHP0Kv1Tc2YN3Vp4yqbRt8J1lABTqSv+CHT48c1F7TWhAiEA1PgNMz4ESc8qrUSnrrFxw4bmyY3xqgTTxtlEoeXBULA=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"sig":"MEUCIGst+eG0OKyV8q/BjGrWLIMBVMmCJYRKXX/lwzlin5VIAiEAhOSV7QCc5Pjh4fTTkK/3xD+k+FhpDU+rmWo11+MVdgc=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":2397918},"engines":{"node":">=18.0.0"},"gitHead":"524679bbd11ef21a83aa42af68a76ea3f509bb86","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"node scripts/normalize-changeset-bumps.mjs && CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","prepush:full":"APORT_PRE_PUSH_LEVEL=full bash scripts/pre-push-check.sh","sync-version":"node scripts/sync-version.mjs","local-pr-gate":"npm run local-pr-audit && npm run local-pr-review","prepush:check":"bash scripts/pre-push-check.sh","local-pr-audit":"npm run prepush:check","prepublishOnly":"npm run build 2>/dev/null || true","local-pr-review":"npm run local-codex-review","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","codex:tool-surface":"bash scripts/check-codex-provider-tool-surface.sh","local-codex-review":"bash scripts/local-codex-review.sh","sync-submodules:latest":"git submodule update --init --remote --recursive"},"_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.9","description":"APort Repository Guard and pre-action authorization guardrails for GitHub, Claude Code, Cursor, Codex, Gemini CLI, Goose, OpenClaw, LangChain, CrewAI, DeerFlow, and n8n","directories":{},"_nodeVersion":"22.23.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"tmp":"tmp/aport-agent-guardrails_1.0.35_1790820950319_0.08234499913691296","host":"s3://npm-registry-packages-npm-production"}},"1.0.36":{"_id":"@aporthq/aport-agent-guardrails@1.0.36","bin":{"aport":"bin/openclaw","aport-guardrail":"bin/aport-guardrail.sh","agent-guardrails":"bin/agent-guardrails","aport-agent-guardrails":"bin/agent-guardrails"},"bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"dist":{"shasum":"9d6a74ffab99df8373cc7ebb8106cd1d50c35239","tarball":"https://registry.npmjs.org/@aporthq/aport-agent-guardrails/-/aport-agent-guardrails-1.0.36.tgz","fileCount":286,"integrity":"sha512-ZHgokdZBAFEJ6BjQRsVo7eQybkfdS4ovPfq7VYI54L0cRtr2VXhJwfLt//ZDEpFJbRlzimOVMGOsXXSOYV9o1Q==","signatures":[{"sig":"MEUCIGZFcQffV6OVmh49mrzaPVAKMIpf1lIe6j0uDBYljuc1AiEAprntRuDOctqc5CEEKUvSwyrwl+/8D/Xpf0JvEMCDQPE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"},{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQC7b5KS+P4xg68mdEO0/FVt0WCO9zLQcIi+G+Gw6oyXQgIhAKklfZRtSWWrtEikDuaqtRw4G8jHqHK+BA5G54E+vDBC"}],"unpackedSize":2417030},"name":"@aporthq/aport-agent-guardrails","author":{"name":"APort Technologies Inc."},"engines":{"node":">=18.0.0"},"gitHead":"6918fa0e3fd2437d648112e1d4c918c3131a33a0","license":"Apache-2.0","scripts":{"dev":"node --watch src/server/index.js","test":"make test","build":"npm run build:core && npm run build --workspaces --if-present","server":"node src/server/index.js","install":"([ -f Makefile ] && make install) || true","version":"node scripts/normalize-changeset-bumps.mjs && CI=1 changeset version && node scripts/sync-version.mjs","changeset":"changeset","build:core":"npm run build -w @aporthq/aport-agent-guardrails-core","prepush:full":"APORT_PRE_PUSH_LEVEL=full bash scripts/pre-push-check.sh","sync-version":"node scripts/sync-version.mjs","local-pr-gate":"npm run local-pr-audit && npm run local-pr-review","prepush:check":"bash scripts/pre-push-check.sh","local-pr-audit":"npm run prepush:check","prepublishOnly":"npm run build 2>/dev/null || true","local-pr-review":"npm run local-codex-review","release:version":"npm run version","sync-submodules":"git submodule update --init --recursive","codex:tool-surface":"bash scripts/check-codex-provider-tool-surface.sh","local-codex-review":"bash scripts/local-codex-review.sh","sync-submodules:latest":"git submodule update --init --remote --recursive"},"version":"1.0.36","_npmUser":{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"},"homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","keywords":["openclaw","github-actions","repository-guard","claude-code","cursor","codex","gemini-cli","goose","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"workspaces":["packages/*","extensions/openclaw-aport"],"_npmVersion":"10.9.9","description":"APort Repository Guard and pre-action authorization guardrails for GitHub, Claude Code, Cursor, Codex, Gemini CLI, Goose, OpenClaw, LangChain, CrewAI, DeerFlow, and n8n","directories":{},"maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"_nodeVersion":"22.23.3","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"typescript":"^5.0.0","@types/node":"^20.0.0","@changesets/cli":"^2.27.0"},"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/aport-agent-guardrails_1.0.36_1790945994011_0.315359997988089"}}},"time":{"created":"2026-02-19T20:53:51.939Z","modified":"2026-10-02T12:59:54.303Z","1.0.8":"2026-02-19T20:53:52.199Z","1.0.9":"2026-02-19T23:45:34.658Z","1.0.10":"2026-02-20T00:20:46.002Z","1.0.11":"2026-03-02T04:32:36.399Z","1.0.12":"2026-03-02T09:15:26.690Z","1.0.13":"2026-03-11T12:04:52.952Z","1.0.14":"2026-03-11T13:57:39.322Z","1.0.15":"2026-03-12T19:30:52.632Z","1.0.16":"2026-03-22T02:59:34.370Z","1.0.17":"2026-03-22T03:37:11.733Z","1.0.18":"2026-03-24T09:54:19.934Z","1.0.19":"2026-03-24T11:37:59.823Z","1.0.20":"2026-03-26T09:54:55.546Z","1.0.21":"2026-04-12T05:25:27.527Z","1.0.22":"2026-04-13T13:25:17.518Z","1.0.23":"2026-04-14T04:05:53.849Z","1.0.24":"2026-04-29T14:59:47.005Z","1.0.25":"2026-05-05T17:31:55.252Z","1.0.26":"2026-05-05T20:49:29.758Z","1.0.27":"2026-05-21T13:48:51.699Z","1.0.28":"2026-05-28T12:25:37.494Z","1.0.29":"2026-05-28T13:26:50.062Z","1.0.30":"2026-08-23T02:41:01.931Z","1.0.31":"2026-09-04T23:13:32.531Z","1.0.32":"2026-09-06T21:45:45.305Z","1.0.33":"2026-09-15T20:21:03.839Z","1.0.34":"2026-09-28T13:58:56.958Z","1.0.35":"2026-10-01T02:15:50.426Z","1.0.36":"2026-10-02T12:59:54.121Z"},"bugs":{"url":"https://github.com/aporthq/aport-agent-guardrails/issues"},"author":{"name":"APort Technologies Inc."},"license":"Apache-2.0","homepage":"https://github.com/aporthq/aport-agent-guardrails#readme","keywords":["openclaw","github-actions","repository-guard","claude-code","cursor","codex","gemini-cli","goose","ironclaw","aport","agent","security","authorization","policy","guardrails","pre-action","ai-agent"],"repository":{"url":"git+https://github.com/aporthq/aport-agent-guardrails.git","type":"git"},"description":"APort Repository Guard and pre-action authorization guardrails for GitHub, Claude Code, Cursor, Codex, Gemini CLI, Goose, OpenClaw, LangChain, CrewAI, DeerFlow, and n8n","maintainers":[{"name":"uchi4jah","email":"uchi.uchibeke@gmail.com"}],"readme":"<div align=\"center\">\n\n# <img src=\"https://aport.io/logo.svg\" alt=\"APort logo\" width=\"31\" /> APort Agent Guardrails\n\n[![npm](https://img.shields.io/npm/v/@aporthq/aport-agent-guardrails.svg)](https://www.npmjs.com/package/@aporthq/aport-agent-guardrails)\n[![PyPI](https://img.shields.io/pypi/v/aport-agent-guardrails.svg)](https://pypi.org/project/aport-agent-guardrails/)\n[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](LICENSE)\n[![Tests](https://img.shields.io/badge/tests-passing-brightgreen.svg)](tests/)\n[![Node](https://img.shields.io/badge/node-%3E%3D18.0.0-brightgreen.svg)](package.json)\n[![Python](https://img.shields.io/badge/python-3.10%2B-brightgreen.svg)](python/aport_guardrails/pyproject.toml)\n[![OpenClaw](https://img.shields.io/badge/OpenClaw-%3E%3D2026.4.11-blue.svg)](extensions/openclaw-aport/package.json)\n\n<p>\n  <a href=\"https://www.npmjs.com/package/@aporthq/aport-agent-guardrails\">npm</a> •\n  <a href=\"https://pypi.org/project/aport-agent-guardrails/\">PyPI</a> •\n  <a href=\"https://aport.io\">Website</a> •\n  <a href=\"https://aport.io/docs\">Docs</a> •\n  <a href=\"https://aport.io/brand-mascot-agent/\">Meet Porter</a> •\n  <a href=\"#-quick-start\">Quick Start</a> •\n  <a href=\"SECURITY.md\">Security</a>\n</p>\n\n</div>\n\n---\n\nDeterministic pre-action authorization for AI agents. Guardrails run before supported tool execution, so prompt injection cannot bypass host-emitted policy checks.\n\n### CTF Evidence\n\nFrom the live APort Vault adversarial testbed:\n\n| Metric | Result |\n|---|---|\n| Total authorization decisions observed | 4,437 |\n| Total attack sessions observed | 1,151 |\n| Level 5 (\"Vault\") restrictive attempts | 879 |\n| Level 5 (\"Vault\") successful breaches | 0 |\n| **Level 5 restrictive success rate** | **0%** |\n| Permissive baseline success rate (for comparison) | 74.6% |\n\n- [CTF Results](https://vault.aport.io/results)\n- [CTF Replay](https://vault.aport.io/replay)\n- [CTF Leaderboard](https://vault.aport.io/leaderboard/page)\n\n\n## Start Here\n\n### Protect a GitHub repository in 60 seconds\n\n```bash\nnpx @aporthq/aport-agent-guardrails github\n```\n\nThis writes a reviewable `.github/workflows/aport-guard.yml` that uses the\npublic [APort Repository Guard](https://github.com/marketplace/actions/aport-repository-guard)\nAction. Default `mode: auto` uses GitHub OIDC, creates or reuses a\nrepository-scoped hosted OAP passport, and starts with report-only evidence.\nEnable hosted enforcement plus branch protection when you are ready for the\nguard to block merges or protected-branch pushes.\n\nBlocking setup for protected branches:\n\n```bash\nnpx @aporthq/aport-agent-guardrails github --mode hosted --branches main,staging\n```\n\n### Install runtime guardrails in 60 seconds\n\n```bash\nnpx @aporthq/aport-agent-guardrails\n```\n\n- In a git repository with no detected runtime framework, pressing Enter starts GitHub Repository Guard setup.\n- For runtime hooks, choose a released target: `cursor`, `claude-code`, `openclaw`, `langchain`, `crewai`, `deerflow`; a released beta command-hook target: `codex`, `gemini`, `goose`; or a setup-only target: `n8n`\n- GitHub repository guard: `npx @aporthq/aport-agent-guardrails github`\n- Claude Code direct: `npx @aporthq/aport-agent-guardrails claude` or `claude-code` for Anthropic's `claude` CLI\n- Curl install URL for runtime hooks: `curl -fsSL https://aport.io/install.sh | bash -s -- claude-code`\n- Existing hosted passport: `npx @aporthq/aport-agent-guardrails <framework> <agent_id>`\n- Change enforcement without recreating a passport: `npx @aporthq/aport-agent-guardrails mode claude-code --enforcement=warn`\n- Reset a framework to a clean APort state: `npx @aporthq/aport-agent-guardrails reset claude-code --yes`\n\nWhen prompted for passport setup, the choices are:\n\n1. `Create hosted APort passport now` — recommended; creates a hosted passport and narrow setup key.\n2. `Use existing hosted passport ID` — paste an existing `agent_id`.\n3. `Create local passport file` — offline/local JSON passport.\n\nFor a new hosted setup, choose option `1`. The installer creates a passport, creates a narrow setup key, writes the framework hook/config, and starts sending decisions to APort. Re-running the same `npx @aporthq/aport-agent-guardrails <framework>` command reuses the framework's existing hosted config or local `aport/passport.json`, refreshes the installed runtime/hooks, and does not create a new passport unless you reset first or explicitly choose a different passport. Hosted reuse prints the dashboard link (`https://aport.io/passports?details=<agent_id>`); when it reuses a saved config, it also prints the mode-file path. For non-interactive installs:\n\n```bash\nnpx --yes @aporthq/aport-agent-guardrails claude-code \\\n  --quick-hosted \\\n  --email you@example.com \\\n  --non-interactive\n```\n\nEquivalent environment-variable form:\n\n```bash\nAPORT_OWNER_EMAIL=\"you@example.com\" \\\nAPORT_QUICK_HOSTED=1 \\\nnpx --yes @aporthq/aport-agent-guardrails claude-code --non-interactive\n```\n\nBoth forms create a hosted passport. For a non-interactive install with a local passport file, pass `--mode=local --non-interactive` (add `--output <path>` to pick the file). The wizard then writes a passport with the framework defaults and asks nothing:\n\n```bash\nnpx --yes @aporthq/aport-agent-guardrails claude-code --mode=local --non-interactive\n```\n\n`--non-interactive` with none of the hosted flags falls back to the same local path. For an interactive local passport, run the installer without flags, choose `3. Create local passport file` at the passport prompt and answer the wizard; keep `Spawn sub-agents and tasks?` at `Y` for Claude Code, otherwise every Agent and Task call is denied. Step-by-step: [docs/QUICKSTART.md](docs/QUICKSTART.md#interactive-local-passport-step-by-step).\n\n### Why Developers and teams trust APort\n\n- **Deterministic enforcement:** runtime hook, not prompt instructions\n- **Fail-closed defaults:** verification failures block risky actions\n- **Explicit rollout modes:** `--enforcement=warn` records completed policy denials while allowing framework actions during policy tuning; `--enforcement=observe` also allows non-mandatory APort runtime/mapping/API failures with warnings for easy adoption\n- **Auditable decisions:** each allow/deny is logged with context\n- **Open standard artifacts:** Open Agent Passport ([OAP](https://github.com/aporthq/aport-spec)) v1.0 passport and decision formats\n- **Research-backed outcomes:** in a live adversarial testbed, permissive-policy success was 74.6% vs 0% under restrictive OAP policy (879 top-tier attempts)\n- **Low latency at production scale:** cloud API verification p50 ~53ms at N=1,000\n- **Security docs:** [SECURITY.md](SECURITY.md), [SECURITY_MODEL.md](docs/SECURITY_MODEL.md)\n- **Backed by Peer-reviewed research:** [arXiv preprint (Mar 2026)](https://arxiv.org/html/2603.20953v1)\n\n### Fast path by persona\n\n- **I want GitHub protection:** [docs/GITHUB_PROTECTION.md](docs/GITHUB_PROTECTION.md)\n- **I already have agent_id:** [docs/HOSTED_PASSPORT_SETUP.md](docs/HOSTED_PASSPORT_SETUP.md)\n- **I need framework setup docs:** [docs/frameworks](docs/frameworks)\n- **I want Claude Code setup:** [docs/frameworks/claude-code.md](docs/frameworks/claude-code.md)\n- **I’m deploying for an IT team:** [docs/ENTERPRISE_DEVICE_DEPLOYMENT.md](docs/ENTERPRISE_DEVICE_DEPLOYMENT.md)\n- **I need OpenClaw now:** [docs/QUICKSTART_OPENCLAW_PLUGIN.md](docs/QUICKSTART_OPENCLAW_PLUGIN.md)\n\n### Brand personality (optional)\n\nSecurity should feel rigorous, not intimidating. Meet Porter, the APort mascot used across the product experience: [Meet Porter](https://aport.io/brand-mascot-agent/).\n\n<details>\n<summary><strong style=\"font-size:18pt\">Deeper background (threat model, rationale, evidence)</strong></summary>\n\nThe security concern is that agent tools and skills can execute sensitive actions (files, commands, external calls). APort addresses this by verifying each tool call against a passport and policy limits before execution. This reduces prompt-injection and “agent decided wrong” risk from runtime behavior to policy configuration.\n\n</details>\n\n---\n\n## GitHub and Supported Frameworks\n\n**Repository protection:** `npx @aporthq/aport-agent-guardrails github` generates a GitHub Actions workflow that uses `aporthq/policy-verify-action@v1` from the GitHub Marketplace. It is the fastest zero-secret path to collect OAP evidence for AI-assisted repository changes. Use `--mode hosted --branches main,staging` for blocking hosted enforcement on protected branches, and add `--block-protected-paths` when workflow, policy, package, or release surfaces should fail closed.\n\n**Runtime guardrails:** APort adapters and providers are available per framework; the same passport and policies apply. **Node users:** `npx @aporthq/aport-agent-guardrails` (then choose framework) or `npx @aporthq/aport-agent-guardrails <framework>`. **Python users (LangChain/CrewAI/DeerFlow):** run the same CLI for the wizard and config, then install the Python package shown in the framework doc.\n\n**Two ways to use APort:** (1) **Guardrails (CLI/setup)** — run the installer to create your passport and config; (2) **Core (library)** — use the `OAPGuardrailProvider` ([docs/PROVIDER.md](docs/PROVIDER.md)) in your app so each tool call is verified. One provider per language (Python + TypeScript), works with any framework. Framework docs: [GitHub](docs/GITHUB_PROTECTION.md), [Claude Code](docs/frameworks/claude-code.md), [Cursor](docs/frameworks/cursor.md), [Codex](docs/frameworks/codex.md), [Gemini CLI](docs/frameworks/gemini-cli.md), [Goose](docs/frameworks/goose.md), [OpenClaw](docs/frameworks/openclaw.md), [LangChain](docs/frameworks/langchain.md), [CrewAI](docs/frameworks/crewai.md), [DeerFlow](docs/frameworks/deerflow.md), [n8n](docs/frameworks/n8n.md).\n\n**CLI-supported targets today:** `github`, `cursor`, `claude`/`claude-code`, `openclaw`, `langchain`, `crewai`, `deerflow`, setup-only `n8n`, plus beta command-hook targets `codex`, `gemini`, and `goose`. `opencode` is intentionally gated until an installed-version plugin smoke test validates the current plugin API. For IT-managed device rollout, see [Enterprise device deployment](docs/ENTERPRISE_DEVICE_DEPLOYMENT.md).\n\n| Surface | CLI / alias | Doc | Integration | Install |\n|-----------|-------------|-----|--------------|--------|\n| **GitHub Repository Guard** | `github` | [docs/GITHUB_PROTECTION.md](docs/GITHUB_PROTECTION.md) | GitHub Action with OIDC-backed hosted OAP passport issue/reuse and repository evidence | `npx @aporthq/aport-agent-guardrails github` |\n| **Claude Code** | `claude` / `claude-code` | [docs/frameworks/claude-code.md](docs/frameworks/claude-code.md) | PreToolUse hook → writes `~/.claude/settings.json` (Claude Code format; not Cursor). | `npx @aporthq/aport-agent-guardrails claude` |\n| **Cursor** | `cursor` | [docs/frameworks/cursor.md](docs/frameworks/cursor.md) | `beforeShellExecution` / `preToolUse` hooks → writes `~/.cursor/hooks.json`. **Runtime enforcement is the bash hook;** the Node package `@aporthq/aport-agent-guardrails-cursor` is a helper only (Evaluator, `getHookPath()`). | `npx @aporthq/aport-agent-guardrails cursor` |\n| **OpenClaw** | `openclaw` | [docs/frameworks/openclaw.md](docs/frameworks/openclaw.md) | **Plugin:** `before_tool_call` via `openclaw-aport` | `npx @aporthq/aport-agent-guardrails openclaw` |\n| **LangChain / LangGraph** | `langchain` | [docs/frameworks/langchain.md](docs/frameworks/langchain.md) | **Python:** `APortCallback` (`on_tool_start`) | `npx @aporthq/aport-agent-guardrails langchain` then `pip install aport-agent-guardrails-langchain` + `aport-langchain setup` |\n| **CrewAI** | `crewai` | [docs/frameworks/crewai.md](docs/frameworks/crewai.md) | **Python:** released hook adapter by default; native `GuardrailProvider` mode for CrewAI builds with native provider support | `npx @aporthq/aport-agent-guardrails crewai` then `pip install aport-agent-guardrails-crewai` + `aport-crewai setup` |\n| **DeerFlow** | `deerflow` | [docs/frameworks/deerflow.md](docs/frameworks/deerflow.md) | **Python:** generic OAP provider wiring in DeerFlow config | `npx @aporthq/aport-agent-guardrails deerflow` then follow printed `uv`/config steps |\n| **n8n** | `n8n` | [docs/frameworks/n8n.md](docs/frameworks/n8n.md) | *Setup available; custom node coming soon* | `npx @aporthq/aport-agent-guardrails n8n` |\n| **Codex CLI** | `codex` | [docs/frameworks/codex.md](docs/frameworks/codex.md) | Beta command hook: repo-local `.codex/hooks.json` for `PreToolUse`; Bash, `apply_patch`, MCP, and local function tools. State stays in `~/.aport/codex`. **Beta limits:** `apply_patch` calls touching more than one file and every `Glob`/`List`/`LS`/`LSP` call are denied by the hook, and warn mode does not lift those two denials; observe mode can allow them with warnings for adoption-only rollout. `webrun`, `browser` navigation, `image_gen.imagegen`, `local_shell`, `write_stdin`, `update_plan`, `request_user_input`, `request_user_input_async`, provider clock/context/wait/user-message/permission prompt tools, observed read-only Codex memory/goal/skill tools, collaboration tools, `computer_use`, MCP resource tools, and plugin-install requests are mapped. Persistent or unclassified memory writes such as `memories.add_ad_hoc_note` or `memory_write` fail closed until policy-backed. Local `computer_use` and interactive browser actions fail closed until hosted `web.browser.v1` can decide them, and `computer_use` must provide an explicit string action in every mode. Unlisted tool names deny as `oap.unknown_tool` by default unless observe mode is explicitly selected. CI and pre-push compare APort's adapter with provider-derived tool names from `openai/codex`. Reviewed deployments can set `APORT_CODEX_TOOL_FALLBACK=on` to route one clear payload effect (`url`, path, or command); mixed effects deny. `write_stdin` is evaluated as complete shell input, while conflicting stdin aliases, partial chunks, shell continuations and control-only chunks fail closed outside observe mode. | `npx @aporthq/aport-agent-guardrails codex` |\n| **Gemini CLI** | `gemini` / `gemini-cli` | [docs/frameworks/gemini-cli.md](docs/frameworks/gemini-cli.md) | Beta command hook: `.gemini/settings.json` `BeforeTool` hook for shell, file, web, and MCP tools. | `npx @aporthq/aport-agent-guardrails gemini` |\n| **Goose** | `goose` | [docs/frameworks/goose.md](docs/frameworks/goose.md) | Beta Goose Open Plugin: project-scoped `.agents/plugins/aport-guardrail` with blocking `PreToolUse`; secrets/state stay in `~/.aport/goose`. | `npx @aporthq/aport-agent-guardrails goose` |\n| **opencode** | `opencode` | [docs/frameworks/opencode.md](docs/frameworks/opencode.md) | Gated; current setup exits with an explanation until plugin API smoke tests pass. | — |\n| **VoltAgent** | planned | [VoltAgent PR #1171](https://github.com/VoltAgent/voltagent/pull/1171) | *In progress* — pluggable `GuardrailProvider` interface landing upstream in `@voltagent/core` | — |\n\nBeta command-hook harnesses use the tool names their creators use: `codex`, `gemini`, and `goose`. They ship through this package and share the same local/API evaluator as Claude Code and Cursor, but remain beta while APort continues validating native hook payloads and warning visibility across host versions. opencode stays gated until APort has an installed-version plugin smoke test.\n\nInstall via `npx @aporthq/aport-agent-guardrails <framework>` (or choose when prompted). OpenClaw can also use the full installer flow. **For LangChain, CrewAI, and DeerFlow, the CLI writes config and installs the local runtime into the framework config directory; then install the Python package and wire the provider/callback shown in the framework doc.** **Python** packages are on PyPI; **Node** packages are on npm (same version as the CLI).\n\n**Passport path:** Each framework has its own **default** passport path (where that framework stores data): e.g. Cursor → `~/.cursor/aport/passport.json`, OpenClaw → `~/.openclaw/aport/passport.json`, LangChain → `~/.aport/langchain/aport/passport.json`. The passport wizard’s **first question** is “Passport file path [default]:” — press Enter for the framework default or type a different path. In non-interactive mode (e.g. CI) use **`--output /path/to/passport.json`** to choose the path. Roadmap: [docs/FRAMEWORK_ROADMAP.md](docs/FRAMEWORK_ROADMAP.md).\n\n**Using SDKs or middleware directly:** If you prefer to integrate with the APort API from your own app (no CLI/framework installer), use the official SDKs and middleware: **Node** — [@aporthq/sdk-node](https://www.npmjs.com/package/@aporthq/sdk-node), [@aporthq/middleware-express](https://www.npmjs.com/package/@aporthq/middleware-express); **Python** — [aporthq-sdk-python](https://pypi.org/project/aporthq-sdk-python/), [aporthq-middleware-fastapi](https://pypi.org/project/aporthq-middleware-fastapi/).\n\n---\n\n## 🚀 Quick Start\n\n**Prerequisites:** For the setup wizard you need **Node 18+** (or use the Python CLI below). **`jq` is required** by the Claude Code, Cursor, Codex, Gemini CLI and Goose hooks and by the local evaluator: if `jq` is missing, the hook denies every tool call (`APort: jq is required`) in enforce, warn and observe modes because it cannot safely parse or evaluate the payload. Install `jq` before setup (`brew install jq` or `apt install jq`). Audit entries also require **`python3` on the PATH used by the host** so logs can be appended without following symlinks; without it, APort denies with `oap.missing_dependency` instead of allowing without an audit record. No clone required.\n\n**1. Run the setup** — For repositories, generate the GitHub Action. For local runtimes, choose your framework when prompted (or pass it). Same public npm package.\n\n**GitHub Repository Guard:**\n```bash\nnpx @aporthq/aport-agent-guardrails github\n\n# blocking hosted mode for protected branches\nnpx @aporthq/aport-agent-guardrails github --mode hosted --branches main,staging\n```\n\n**Node (GitHub first, then Cursor, Claude Code, OpenClaw, or config for another released framework):**\n```bash\nnpx @aporthq/aport-agent-guardrails\n# or: npx @aporthq/aport-agent-guardrails github | cursor | claude | claude-code | codex | gemini | goose | openclaw | langchain | crewai | deerflow | n8n\n# n8n currently writes passport/config only; runtime node enforcement ships separately.\n# optional mode flags (all frameworks):\n#   --mode=api --api-url=https://api.aport.io\n#   --mode=local\n#   --enforcement=warn   # explicit report-only rollout; default is enforce/fail-closed\n```\n\n**Reset / uninstall APort-owned wiring**\n\nUse the same dispatcher for cleanup:\n\n```bash\nnpx @aporthq/aport-agent-guardrails reset claude-code --yes\n# or\nnpx @aporthq/aport-agent-guardrails claude-code reset --yes\n```\n\nSupported reset targets match released and beta runtime targets:\n`cursor`, `claude`/`claude-code`, `codex`, `gemini`, `goose`, `openclaw`, `langchain`, `crewai`, `deerflow`, `n8n`.\n\nReset removes APort-owned config and integration wiring for the selected framework.\nWhen possible, unrelated user hooks are preserved.\n\n**Python (LangChain, CrewAI, or DeerFlow):** Use the Python CLI directly via `uvx` or an installed package:\n```bash\nuvx --from aport-agent-guardrails aport setup --framework=langchain\n# or --framework=crewai / deerflow\n```\nOr install the package first:\n```bash\npip install aport-agent-guardrails\naport setup --framework=langchain\n# or --framework=crewai / deerflow\n```\nThen install the framework-specific Python package and follow the printed integration step for your framework.\n\nThis runs setup and writes config for your framework. Choose hosted setup for passport and setup-key creation, or local setup for an on-disk passport. Follow the **next steps** printed at the end (e.g. restart Cursor; or for CrewAI: by default install `aport-agent-guardrails-crewai` for released CrewAI, or opt into native-provider mode if your CrewAI build supports it).\n\n**Guardrail mode (local vs API)** — On the **Node** installer (`npx @aporthq/aport-agent-guardrails …` / `bin/agent-guardrails`), every framework accepts the same flags: `--mode=api` (with optional `--api-url`, default `https://api.aport.io`) or `--mode=local`, and an optional hosted `ap_<hex>` argument (API mode, no local passport). That flow writes `…/aport/guardrail-mode.env` where the hooks/generic installers need it. The **Python** `aport setup` CLI does not parse those flags yet; use the Node command above for API/local mode during setup, or set mode in your framework `config.yaml` per the framework doc.\n\n**Enforcement mode** — Default is `enforce`: APort fails closed and policy denials block the tool call. Use `--enforcement=warn` for conservative report-only rollout: completed policy denials are recorded but the framework action continues, while malformed hook input, missing dependencies, invalid mode files, unmapped effectful tools, and evaluator integrity failures still block. Use `--enforcement=observe` for adoption-first rollout: APort returns allow-with-warning for policy denials and non-mandatory APort runtime/mapping/API failures so developers are not blocked while you tune passports and mappings. Mandatory prerequisites such as missing `jq` still block; if APort must create a synthetic audit entry for an observe-mode adapter/API failure, the hook also needs `python3`, and an unsafe or unavailable audit path denies with `oap.audit_unavailable` or `oap.missing_dependency`. Observe is not a security enforcement mode. Host visibility differs: Claude Code shows a `systemMessage` warning; Cursor returns best-effort warning fields but may not display allow warnings in the UI, so use the audit log/status output as the source of truth. See APort's [OAP Decisions vs Harness Enforcement](https://github.com/aporthq/agent-passport/blob/main/docs/DECISION-VS-ENFORCEMENT.md) guidance for how to reconcile signed `allow: false` decisions with local warn/report-only rollout.\n\nChange enforcement later without creating a new passport or reinstalling hooks:\n\n```bash\nnpx @aporthq/aport-agent-guardrails mode claude-code --enforcement=warn\nnpx @aporthq/aport-agent-guardrails mode codex --enforcement=observe\nnpx @aporthq/aport-agent-guardrails mode cursor --enforcement=enforce\nnpx @aporthq/aport-agent-guardrails mode langchain --mode=api --enforcement=warn\n```\n\nTo upgrade the installed runtime, rerun the unpinned `npx @aporthq/aport-agent-guardrails <framework>` installer. The command resolves the current npm package, reuses the existing passport, and replaces the stable runtime copy used by the framework hook. Runtime hooks do not check npm for updates during tool calls, so version prompts cannot slow or block agent actions; enterprise deployments can pin reviewed versions with `APORT_PACKAGE_VERSION`.\n\n**Install into a custom directory.** Each framework's config directory can be moved with one environment variable. The installer, the `mode` and `reset` commands, and the Python `aport setup` CLI all read it (`get_config_dir` in `bin/lib/config.sh`):\n\n| Framework | Variable | Default |\n|-----------|----------|---------|\n| Claude Code | `APORT_CLAUDE_CODE_CONFIG_DIR` | `~/.claude` |\n| Cursor | `APORT_CURSOR_CONFIG_DIR` | `~/.cursor` |\n| Codex CLI | `APORT_CODEX_CONFIG_DIR` | `~/.aport/codex` |\n| Gemini CLI | `APORT_GEMINI_CLI_CONFIG_DIR` | `~/.aport/gemini-cli` |\n| Goose | `APORT_GOOSE_CONFIG_DIR` | `~/.aport/goose` |\n| OpenClaw | `APORT_OPENCLAW_CONFIG_DIR`, `OPENCLAW_CONFIG_DIR`, `OPENCLAW_STATE_DIR`, `OPENCLAW_HOME` (the `openclaw` installer itself prompts for the directory) | `~/.openclaw` |\n| LangChain, CrewAI, DeerFlow | `APORT_LANGCHAIN_CONFIG_DIR`, `APORT_CREWAI_CONFIG_DIR`, `APORT_DEERFLOW_CONFIG_DIR` | `~/.aport/<framework>` |\n| n8n | `APORT_N8N_CONFIG_DIR` | `~/.n8n` |\n\nPassport, `guardrail-mode.env`, the runtime copy and the audit log all land in `<dir>/aport/`. Example: `APORT_CLAUDE_CODE_CONFIG_DIR=/srv/agent/claude npx @aporthq/aport-agent-guardrails claude-code`. For Codex, Gemini CLI and Goose the installer writes the variable into the hook command or wrapper script, so nothing else is needed. For Claude Code and Cursor the settings file stores only the hook path and the hook reads the variable at run time, so export it in the environment the host is launched from; otherwise the hook falls back to `~/.claude` or `~/.cursor` and denies every call when no passport or mode file is there. The Python runtime packages do not read these variables; pass `config_path` to the provider or callback instead.\n\nTo point a hook at a passport outside its config directory, set `APORT_PASSPORT_FILE` and also `APORT_ALLOW_EXTERNAL_PASSPORT_FILE=1`. Without the second variable the hook ignores an `APORT_PASSPORT_FILE` that is not under its config directory (`bin/lib/framework-hook-paths.sh`). The guard exists because GUI hosts can inherit a stale variable from another framework's session, which would otherwise swap in a different passport. `APORT_DECISION_FILE` and `APORT_AUDIT_LOG` are subject to the same in-directory rule and have no override.\n\n**2. Hosted passport (optional)** — The installer can create a hosted passport during setup. If you already have an `agent_id` from [aport.io](https://aport.io), use it to skip passport creation: `npx @aporthq/aport-agent-guardrails <framework> <agent_id>`. See [Hosted passport setup](docs/HOSTED_PASSPORT_SETUP.md).\n\n**3. Test that policy runs** — After setup, the guardrail runs automatically when your agent uses tools (Cursor hook, LangChain callback, OpenClaw plugin, etc.). To try allow/deny from the command line (any framework), use the installed `aport-guardrail` command (Node) or call the evaluator from Python; both use your existing passport from the APort framework state dir (e.g. `~/.cursor/aport/`, `~/.aport/langchain/aport/`, `~/.aport/codex/aport/`).\n\n**Node:**\n```bash\naport-guardrail system.command.execute '{\"command\":\"ls\"}'      # ALLOW (safe)\naport-guardrail system.command.execute '{\"command\":\"rm -rf /\"}'  # DENY (blocked pattern)\n# Exit: 0 = ALLOW, 1 = DENY\n```\n*(If you use `npx` without `-g`, run `npx aport-guardrail ...`.)*\n\n**Python:** Use the guardrail in your app (e.g. add `APortCallback()` to your LangChain agent or use `register_aport_guardrail()` for released CrewAI). The guardrail runs on every tool call. To test allow/deny from the shell without Node, use `npx aport-guardrail ...` as above, or see your framework doc for in-app testing.\n\n**Check passport status and audit:**\n\n| What | Where |\n|------|--------|\n| **Passport & audit** | Stored in your **APort framework state dir** (e.g. `~/.cursor/aport/`, `~/.openclaw/aport/`, `~/.aport/langchain/aport/`, `~/.aport/codex/aport/`, `~/.aport/gemini-cli/aport/`, `~/.aport/goose/aport/`). |\n| **Audit log** | `config_dir/aport/audit.log` — one line per decision (timestamp, tool, allow/deny, policy, context). |\n| **Last decision** | `config_dir/aport/decision.json` (OAP v1.0 format). |\n\nYour framework doc describes where hook config and APort state are stored for that harness.\n\n📖 **Per-framework:** [GitHub](docs/GITHUB_PROTECTION.md) · [Claude Code](docs/frameworks/claude-code.md) · [Cursor](docs/frameworks/cursor.md) · [Codex](docs/frameworks/codex.md) · [Gemini CLI](docs/frameworks/gemini-cli.md) · [Goose](docs/frameworks/goose.md) · [OpenClaw](docs/frameworks/openclaw.md) · [LangChain](docs/frameworks/langchain.md) · [CrewAI](docs/frameworks/crewai.md) · [DeerFlow](docs/frameworks/deerflow.md) · [n8n](docs/frameworks/n8n.md) · [opencode](docs/frameworks/opencode.md)\n🌐 **Hosted passport:** [Use agent_id from aport.io](docs/HOSTED_PASSPORT_SETUP.md)\n\n---\n\n## 🔒 Runtime Enforcement Options\n\n| | Runtime hook / plugin ✅ | AGENTS.md only ⚠️ |\n|---|--------------------------|-------------------|\n| **Policy timing** | Before the tool call the host exposes | After the model decides to follow instructions |\n| **Bypass risk** | Lower, bounded by host/runtime hook coverage | High |\n| **Recommended** | **Yes** | Only as documentation or fallback |\n\n**Runtime hook/plugin (recommended):** The host invokes APort before supported tool calls execute. This repo ships runtime integrations for Claude Code, Cursor, OpenClaw, LangChain, CrewAI, Codex CLI, Gemini CLI, Goose, DeerFlow setup, and n8n setup. Exact coverage depends on what each host exposes.\n**AGENTS.md:** Agent is *instructed* to call the guardrail; best-effort only. Runtime hooks ignore repository-controlled AGENTS.md passport settings by default so a checked-out repo cannot swap in a permissive passport. Set `APORT_TRUST_REPO_POLICY=1` only for repositories whose AGENTS.md policy you intentionally trust.\n\n**What the shell policy sees:** For Bash-style tools the evaluator receives only the command string. `allowed_commands` is a prefix match. `blocked_patterns` uses word-boundary and glob matching, case-insensitive: a single word such as `sudo` matches only as a whole word (it does not block `sudoku`), an entry containing `*` or `?` is a glob, and a multi-word entry such as `rm -rf` matches as written. When `allowed_commands` is restrictive (not `*`), a command containing an unquoted `&&`, `||`, `;`, `|`, `&`, newline, `(`, `)`, `$(`, `<(`, `>(`, a `#` comment or `$'...'` quoting is denied with `oap.command_chain_unsupported`. It does not parse `git push` remotes or branches, does not see files read by `cat .env` or written with `>`, and does not apply `web.fetch` domain limits to `curl`. Path and domain limits apply to the host's own Read/Write/Edit/WebFetch tools. A passport that sets `max_execution_time` denies shell tools with no timeout (Cursor, Gemini CLI, Goose, Codex `exec_command`); Claude Code Bash and Codex `shell` fall back to their harness defaults of 120 s and 10 s. For unattended agents pair APort with a harness sandbox, a ruleset on the default branch, and a scoped token; details in [docs/SECURITY_MODEL.md](docs/SECURITY_MODEL.md#what-the-bash-policy-does-and-does-not-see).\n\n---\n\n## 🔌 Verification methods (local vs API)\n\n**Default and recommended:** **API mode** — full OAP policy evaluation (JSON Schema, assurance, regions, evaluation rules from policy JSON, signed decisions). The setup wizard defaults to API when you choose a mode.\n\n**Fail-closed by default:** If the evaluator cannot find a passport or guardrail script (e.g. first run, wrong config dir), it **denies** the tool call (`oap.misconfigured`). For legacy allow-when-missing behavior, set `fail_open_when_missing_config: true` in your config or `APORT_FAIL_OPEN_WHEN_MISSING_CONFIG=1` in the environment.\n\n| Mode | Best for | Full OAP? | Network |\n|------|----------|-----------|---------|\n| **API (default)** | Production, full policy parity, new policy packs without code changes | ✅ | Yes (api.aport.io or self-hosted) |\n| **Local (bash)** | Privacy, offline, air-gapped | Subset only (hand-coded limits for exec, file read/write, web fetch, MCP, sessions, messaging, repo; see [what the Bash policy sees](docs/SECURITY_MODEL.md#what-the-bash-policy-does-and-does-not-see)) | No |\n\n**API mode** can use either a **local passport file** (sent in the request body; not stored) or **agent_id only**: set `APORT_AGENT_ID` to your hosted passport’s agent ID and the API fetches the passport from the registry — no passport JSON file needed. See [Hosted passport setup](docs/HOSTED_PASSPORT_SETUP.md).\n\nDeep dive (what each supports, comparison table): [Verification methods](docs/VERIFICATION_METHODS.md).\n\n---\n\n## ⚡ Performance\n\nGuardrail verification latency from the latest preprint benchmark set (**N=1,000**).\n\n| Mode | p50 | p95 | p99 | N |\n|------|-----|-----|-----|---|\n| Cloud API (agent_id, pack in path) | 53ms | 63ms | 76ms | 1,000 |\n| Cloud API (agent_id, policy in body) | 53ms | 62ms | 77ms | 1,000 |\n| Cloud API (passport in body, pack in path) | 54ms | 63ms | 74ms | 1,000 |\n| Cloud API (passport in body, policy in body) | 53ms | 63ms | 71ms | 1,000 |\n| Local policy evaluation | 174ms | 243ms | 358ms | 1,000 |\n\nSource: [Before the Tool Call: Deterministic Pre-Action Authorization for Autonomous AI Agents](https://arxiv.org/html/2603.20953v1)\n\n---\n\n<details>\n<summary><strong>📐 How It Works (expand)</strong></summary>\n\n## 📐 How It Works\n\n<div align=\"center\">\n\n```mermaid\n%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f0f9ff','primaryTextColor':'#0c4a6e','primaryBorderColor':'#0284c7','lineColor':'#0369a1','secondaryColor':'#e0f2fe','tertiaryColor':'#bae6fd'}}}%%\nsequenceDiagram\n  autonumber\n  participant User as 👤 User\n  participant OC as 🦀 OpenClaw\n  participant Hook as 🔒 before_tool_call\n  participant Plugin as 🛡️ APort Plugin\n  participant Guard as 📋 Guardrail\n\n  User->>OC: \"Run: rm -rf /tmp\"\n  activate OC\n  OC->>Hook: tool call (exec.run, params)\n  activate Hook\n  Hook->>Plugin: before_tool_call(exec.run, params)\n  activate Plugin\n  Note over Plugin: Map tool → policy<br/>exec.run → system.command.execute.v1\n  Plugin->>Guard: evaluate(passport, policy, context)\n  activate Guard\n  Note over Guard: API or local script<br/>passport + limits\n  Guard-->>Plugin: DENY (blocked pattern)\n  deactivate Guard\n  Plugin-->>Hook: block: true, blockReason\n  deactivate Plugin\n  Hook-->>OC: Tool blocked\n  deactivate Hook\n  OC-->>User: ❌ Action blocked by policy\n  deactivate OC\n```\n\n**Flow (high level):**\n\n```mermaid\n%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f0f9ff','primaryTextColor':'#0c4a6e','primaryBorderColor':'#0284c7','lineColor':'#0369a1'}}}%%\nflowchart TB\n  subgraph User[\"👤 User\"]\n    A[User request]\n  end\n  B[🦀 OpenClaw: tool call]\n  C[🔒 before_tool_call hook]\n  D[🛡️ APort plugin]\n  E[📋 Guardrail: passport + policy]\n  F{Decision}\n  G[✅ ALLOW — tool runs]\n  H[❌ DENY — tool blocked]\n  A --> B --> C --> D --> E --> F\n  F --> G\n  F --> H\n  style A fill:#0277bd,stroke:#01579b,stroke-width:2px,color:#fff\n  style B fill:#1565c0,stroke:#0d47a1,stroke-width:2px,color:#fff\n  style C fill:#0288d1,stroke:#01579b,stroke-width:2px,color:#fff\n  style D fill:#ff6f00,stroke:#bf360c,stroke-width:3px,color:#fff\n  style E fill:#ff6f00,stroke:#bf360c,stroke-width:2px,color:#fff\n  style F fill:#7b1fa2,stroke:#4a148c,stroke-width:2px,color:#fff\n  style G fill:#388e3c,stroke:#1b5e20,stroke-width:2px,color:#fff\n  style H fill:#c62828,stroke:#b71c1c,stroke-width:2px,color:#fff\n```\n\n</div>\n\n```\nUser → \"Delete all log files\"\n         ↓\n   OpenClaw: tool \"exec.run\"\n         ↓\n   🔒 before_tool_call hook\n         ↓\n   🛡️ APort plugin → guardrail (passport + policy)\n         ↓\n   ┌─────────┴─────────┐\n   ✅ ALLOW            ❌ DENY\n   Tool runs           Tool blocked\n```\n\n**Key:** The platform enforces policy. The AI cannot skip this check.\n\n---\n\n</details>\n\n<details>\n<summary><strong>🏛️ Security model (three layers) (expand)</strong></summary>\n\n## 🏛️ Security model (three layers)\n\nAPort enforces **identity → authorization → audit** before supported tools run.\nGitHub uses the Marketplace Action and OIDC; Claude Code, Cursor, Codex,\nGemini CLI, and Goose use host command hooks; OpenClaw uses the\n`before_tool_call` plugin; LangChain/CrewAI use adapters. Each path uses the\nsame passport and policy model, then either the local evaluator or hosted APort\nAPI evaluates the action.\n\n<div align=\"center\">\n\n```mermaid\n%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f0f9ff','primaryTextColor':'#0c4a6e','primaryBorderColor':'#0284c7','lineColor':'#0369a1'}}}%%\ngraph TB\n  subgraph L1[\"Layer 1: Identity (Who)\"]\n    A[Agent Passport<br/>OAP v1.0 / W3C DID]\n    B[Owner, contact, org]\n    C[Assurance level L0–L3]\n  end\n\n  subgraph L2[\"Layer 2: Authorization (What)\"]\n    D[Policy packs<br/>code.*, data.*, messaging.*]\n    E[Graduated controls<br/>Max amounts, daily caps]\n    F[Context-aware rules<br/>Branch allowlist, PII filters]\n  end\n\n  subgraph L3[\"Layer 3: Audit (Proof)\"]\n    G[Decision receipts<br/>Ed25519 in API mode]\n    H[Audit trail<br/>Allow/deny logged]\n    I[Kill switch<br/>Local file or global via API]\n  end\n\n  A --> D\n  B --> D\n  C --> D\n  D --> G\n  E --> G\n  F --> G\n  G --> H\n  H --> I\n\n  style A fill:#0277bd,stroke:#01579b,stroke-width:2px,color:#fff\n  style D fill:#ff6f00,stroke:#bf360c,stroke-width:2px,color:#fff\n  style G fill:#6a1b9a,stroke:#4a148c,stroke-width:2px,color:#fff\n```\n\n</div>\n\n- **Local-first:** Passport and policy live on your machine (or in repo); no cloud required for basic enforcement.\n- **Fail-closed:** Missing or invalid passport → deny.\n- **Opt-in cloud:** Use API mode for global kill switch, signed receipts, and team sync.\n\n### What APort Protects\n\n**✅ Pre-action authorization (agent misbehavior):**\n- **Prompt injection** - Hook-based enforcement; agent cannot bypass via prompts\n- **Malicious skills** - Third-party OpenClaw skills validated before execution\n- **Unauthorized commands** - Allowlist + 50+ blocked patterns (rm -rf, sudo, nc, find -exec rm, etc.)\n- **Data exfiltration** - File access, messaging, web requests controlled by policy\n- **Resource limits** - Rate limits, size caps, transaction amounts enforced\n\n**Application-layer security model:** APort enforces policies at the agent action layer (between agent decision and tool execution). It operates within the OS trust boundary—standard for authorization systems like OAuth, IAM, and policy engines.\n\n**For production:** Use API mode (`mode: api` with `agent_id`) for cryptographically signed decisions, protected passports, and global suspend. See [docs/SECURITY_MODEL.md](docs/SECURITY_MODEL.md) for full threat model, attack scenarios, and best practices.\n\n---\n\n</details>\n\n## 🌐 When to use API vs local\n\n| Use **local** when | Use **API** (default) when |\n|--------------------|----------------------------|\n| Single developer, no cloud | Team; same policies across machines |\n| Offline or air-gapped | You want global kill switch (&lt;15s) |\n| Plain audit logs are enough | You need signed receipts (e.g. SOC 2, compliance) |\n| No API key / self-host not ready | Registry checks, analytics, or policy marketplace |\n\nSee [Verification methods](docs/VERIFICATION_METHODS.md) for a detailed comparison.\n\n---\n\n## 📖 Example outcomes\n\n| Scenario | Without APort | With APort |\n|----------|----------------|---------------------------|\n| **Oversized PR** | Agent creates 1200-file PR | Denied: “PR size exceeds limit of 500 files” |\n| **PII export** | Agent exports SSN/driver’s license | Denied: “PII export not allowed” (data.export policy) |\n| **Kill switch** | Manually edit config on every machine | API: suspend passport once → all agents deny in &lt;15s |\n\n---\n\n## GitHub Protection\n\nAPort can also verify GitHub repository activity in CI. Use hosted verification for GitHub Actions so APort can validate the workflow identity with GitHub OIDC, issue signed decisions, and record auditable evidence.\n\nProtection surfaces:\n\n| Surface | Policy |\n|--------|--------|\n| Current Repository Guard Action: PR/repository provenance and merge/push evidence | `code.repository.merge.v1` |\n| Agent/runtime or direct guardrail checks: explicit release publishing tools | `code.release.publish.v1` |\n\nThe local evaluator includes a lightweight subset for developer/offline checks: repository allowlists, branch allowlists, changed-path allowlists, action-specific capability checks, and semantic-version checks for explicit release publishing tool calls. Hosted verification is the source of truth for GitHub OIDC, signed receipts, Action-collected repository evidence, and organization audit. Shell commands such as `npm publish` still arrive through shell hooks as `system.command.execute.v1`; use explicit release tools or hosted API verification for `code.release.publish.v1`.\n\nSee [GitHub protection](docs/GITHUB_PROTECTION.md) for the recommended setup and [Tool / Policy Mapping](docs/TOOL_POLICY_MAPPING.md) for exact tool-to-policy names.\n\n---\n\n## 📜 Commands (after install)\n\n**Node:** When you install via `npm install @aporthq/aport-agent-guardrails` (or use `npx`), these commands are available:\n\n| Command | Purpose |\n|--------|---------|\n| `agent-guardrails` | Main entry — prompt for framework or pass one: `agent-guardrails openclaw \\| cursor \\| claude-code \\| langchain \\| crewai \\| deerflow \\| n8n`. Project target: `agent-guardrails github [--policy] [--force]`. Args after a framework are passed through (e.g. `agent-guardrails openclaw <agent_id>`). |\n| `agent-guardrails reset <framework> [--yes]` | Remove APort-owned config and hook/plugin wiring for one framework. Positional form also works: `agent-guardrails <framework> reset --yes`. |\n| `aport` | OpenClaw one-command setup (passport + plugin + wrappers). Optional: `aport <agent_id>` for hosted passport. |\n| `aport-guardrail` | Run guardrail check from the CLI (e.g. `aport-guardrail system.command.execute '{\"command\":\"ls\"}'`). Uses passport from your APort framework state dir. |\n\n**Python:** After `pip install aport-agent-guardrails` you get `aport` (setup helper). For LangChain or CrewAI, install the framework package and setup:\n\n| Command | Purpose |\n|--------|---------|\n| `aport setup --framework=langchain` | Print next-step commands (npx wizard, then `pip install aport-agent-guardrails-langchain`, `aport-langchain setup`). |\n| `aport setup --framework=crewai` | Default released CrewAI path: bootstrap config/runtime, then use `pip install aport-agent-guardrails-crewai` and `aport-crewai setup`. |\n| `aport setup --framework=crewai --integration-mode=native` | Native CrewAI path: bootstrap config/runtime, then use `uv add aport-agent-guardrails` and `OAPGuardrailProvider`. |\n| `aport-langchain setup` | LangChain config and wizard (after installing `aport-agent-guardrails-langchain`). |\n\nUse the framework-specific doc for where config and passport live and for any extra steps (e.g. Cursor: restart IDE; LangChain/CrewAI: add callback/hook in code).\n\n*Contributors: repo layout and dev scripts (build, test, release) are in [docs/REPO_LAYOUT.md](docs/REPO_LAYOUT.md) and [CONTRIBUTING.md](CONTRIBUTING.md).*\n\n---\n\n## 📚 Documentation\n\n| Doc | Description |\n|-----|-------------|\n| [Quick Start Guide](docs/QUICKSTART.md) | Passport wizard, copy-paste option |\n| [GitHub Protection](docs/GITHUB_PROTECTION.md) | Protect PR/push workflows with hosted OAP verification and explicit release checks |\n| [Hosted passport setup](docs/HOSTED_PASSPORT_SETUP.md) | Use passport from aport.io with any supported framework: `npx ... <framework> <agent_id>` or choose hosted in wizard |\n| [Verification methods (local vs API)](docs/VERIFICATION_METHODS.md) | Deep dive: bash vs API evaluator |\n| [Security model](docs/SECURITY_MODEL.md) | Threat model, what the Bash policy does and does not see, default sensitive read paths |\n| [Tool / Policy Mapping](docs/TOOL_POLICY_MAPPING.md) | Tool names → policy packs |\n| [QuickStart: OpenClaw Plugin](docs/QUICKSTART_OPENCLAW_PLUGIN.md) | One-command OpenClaw setup |\n| [OpenClaw Local Integration](docs/OPENCLAW_LOCAL_INTEGRATION.md) | API, Python example |\n| [Repo Layout](docs/REPO_LAYOUT.md) | For contributors: package layout (`bin/`, `src/`, `extensions/`) |\n| [Upgrade Guide](docs/UPGRADE.md) | Migrating between versions (e.g. 0.1.0 → 1.0.0) |\n| **Frameworks** | Per-framework setup and how guardrails run |\n| → [Claude Code](docs/frameworks/claude-code.md) | PreToolUse hook, `~/.claude/settings.json` |\n| → [Cursor](docs/frameworks/cursor.md) | beforeShellExecution / preToolUse hooks, `~/.cursor/hooks.json` |\n| → [Codex CLI](docs/frameworks/codex.md) | Beta `PreToolUse` command hook, `.codex/hooks.json` |\n| → [Gemini CLI](docs/frameworks/gemini-cli.md) | Beta `BeforeTool` command hook, `.gemini/settings.json` |\n| → [Goose](docs/frameworks/goose.md) | Beta Open Plugin with blocking `PreToolUse` |\n| → [OpenClaw](docs/frameworks/openclaw.md) | `before_tool_call` plugin |\n| → [LangChain / LangGraph](docs/frameworks/langchain.md) | `APortCallback` handler |\n| → [CrewAI](docs/frameworks/crewai.md) | Released hook adapter by default; native provider mode when available |\n| → [DeerFlow](docs/frameworks/deerflow.md) | Generic provider wiring via DeerFlow `config.yaml` |\n| → [n8n](docs/frameworks/n8n.md) | Custom node, branch on allow/deny |\n| [Framework roadmap](docs/FRAMEWORK_ROADMAP.md) | Support status and roadmap |\n\n---\n\n<details>\n<summary><strong>🏗️ Architecture (expand)</strong></summary>\n\n## 🏗️ Architecture\n\n<div align=\"center\">\n\n```mermaid\n%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f0f9ff','primaryTextColor':'#0c4a6e','primaryBorderColor':'#0284c7','lineColor':'#0369a1','secondaryColor':'#e0f2fe','tertiaryColor':'#bae6fd'}}}%%\nflowchart LR\n  subgraph Runtime[\"Runtime\"]\n    OC[🦀 OpenClaw / IronClaw]\n    S[Sandbox, channels, tools]\n    OC --> S\n  end\n  subgraph Policy[\"Pre-action policy\"]\n    AP[🛡️ APort Guardrails]\n    P[Passport, limits, audit]\n    AP --> P\n  end\n  Runtime <-->|before every tool| Policy\n  style OC fill:#1565c0,stroke:#0d47a1,stroke-width:2px,color:#fff\n  style S fill:#6a1b9a,stroke:#4a148c,stroke-width:1px,color:#fff\n  style AP fill:#ff6f00,stroke:#bf360c,stroke-width:3px,color:#fff\n  style P fill:#ff6f00,stroke:#bf360c,stroke-width:1px,color:#fff\n```\n\n**Where verification runs (this repo):**\n\n```mermaid\n%%{init: {'theme':'base', 'themeVariables': {'primaryColor':'#f0f9ff','primaryTextColor':'#0c4a6e','primaryBorderColor':'#0284c7','lineColor':'#0369a1'}}}%%\nflowchart TB\n  subgraph Machine[\"Your machine\"]\n    OC[🦀 OpenClaw]\n    Plug[🛡️ APort plugin<br/>before_tool_call]\n    Guard[📋 Guardrail]\n    OC --> Plug\n    Plug --> Guard\n  end\n  Guard -->|API mode| API[📡 api.aport.io<br/>or self-hosted]\n  Guard -->|Local mode| Bash[📜 aport-guardrail-bash.sh]\n  style OC fill:#1565c0,stroke:#0d47a1,stroke-width:2px,color:#fff\n  style Plug fill:#ff6f00,stroke:#bf360c,stroke-width:3px,color:#fff\n  style Guard fill:#ff6f00,stroke:#bf360c,stroke-width:2px,color:#fff\n  style API fill:#2e7d32,stroke:#1b5e20,stroke-width:1px,color:#fff\n  style Bash fill:#6b7280,stroke:#374151,stroke-width:1px,color:#fff\n```\n\n</div>\n\n- **OpenClaw** = Runtime (sandbox, channels, tools).  \n- **APort plugin** = Pre-action hook; calls guardrail (API or local script).  \n- **Guardrail** = Passport + policy evaluation; allow/deny before the tool runs.\n\nDefense in depth: policy *before* execution, runtime safety *during* execution.\n\n---\n\n</details>\n\n## 🤝 Contributing\n\nContributions welcome: framework adapters, setup improvements, local evaluator support, and docs.\nFor new public policy packs, start with the policy proposal flow in\n[`aporthq/aport-policies`](https://github.com/aporthq/aport-policies), then update this repo's\nsubmodule and mappings as needed. See [CONTRIBUTING.md](CONTRIBUTING.md).\n\n---\n\n## 📄 License\n\nApache 2.0 — see [LICENSE](LICENSE).\n\n**Open-core:** Local evaluation and CLI in this repo are open source (Apache 2.0). [api.aport.io](https://api.aport.io) is a separate product for cloud features such as signed receipts, global kill switch, and team sync.\n\n---\n\n## 🔗 Links\n\n- [npm package](https://www.npmjs.com/package/@aporthq/aport-agent-guardrails) · [APort](https://aport.io) · [Docs](https://aport.io/docs)\n- [GitHub Issues](https://github.com/aporthq/aport-agent-guardrails/issues) · [Discussions](https://github.com/aporthq/aport-agent-guardrails/discussions)\n\n---\n","readmeFilename":"README.md"}