Featured

Deploy OpenClaw in 60 seconds — 20% off logoDeploy OpenClaw in 60 seconds — 20% off

Launch OpenClaw on Hostinger in about 60 seconds and keep your agent live 24/7. Our referral link gives you 20% off, no coupon code needed.

Launch on Hostinger
Run your Hermes agent on Hostinger, fully managed logoRun your Hermes agent on Hostinger, fully managed

Launch Hermes on Hostinger in one click, fully managed, no VPS knowledge needed. Use code ZACAARON10 for 10% off.

Launch on Hostinger
Crawl and scrape any site into clean data, 10% off logoCrawl and scrape any site into clean data, 10% off

Firecrawl crawls and scrapes any site into clean markdown for your agent. Get 1,000 free credits, and new users get 10% off their first purchase.

Try Firecrawl free
6,000+ web scrapers for your AI agent, start free logo6,000+ web scrapers for your AI agent, start free

Apify gives your agent live web data: 6,000+ prebuilt scrapers and actors, MCP-ready. Sign up free with $5 in usage credits.

Try Apify free
One API to scrape, enrich, and extract the internet. logoOne API to scrape, enrich, and extract the internet.

Context.dev gives your agents a single API to scrape, enrich, and extract live web data — no proxies, no parsers, no maintenance.

Start building free
SetupClaw: done-for-you OpenClaw for founders & exec teams logoSetupClaw: done-for-you OpenClaw for founders & exec teams

White-glove OpenClaw for founders and exec teams (4–50+ employees): we install, harden, integrate your tools, and maintain it — secured from day one.

Get it set up for you
SEO data APIs for your agent, $1 free credit logoSEO data APIs for your agent, $1 free credit

DataForSEO gives your agent live access to SERP results, keyword data, backlinks, and on-page SEO data through one API. New accounts get a $1 credit, good for up to 20,000 keyword or backlink lookups.

Try DataForSEO free
Reach 48,000+ AI builders

A flat monthly placement in front of developers actively installing AI tools. No lock-in, cancel anytime.

Advertise here
plainid-authorizer logo

plainid-authorizer

plainid-org/openclaw-authorizer

Otheropenclawby plainid-org

Summary

OpenClaw plugin exposing 0 skills.

Install to Claude Code

openclaw plugin add plainid-org/openclaw-authorizer

Run in Claude Code. Add the marketplace first with /plugin marketplace add plainid-org/openclaw-authorizer if you haven't already.

README.md

@plainid/openclaw-authorizer

Standalone OpenClaw plugin package for PlainID authorization.

It supports two runtime modes:

  • principal-context: PlainID sees the authenticated user as the primary identity and the OpenClaw agent as a secondary identity.
  • agent-only: PlainID sees only the OpenClaw agent as the primary identity.

This sibling project is the publish target. The larger development repo remains the source of truth for the compose stack, sidecar deployment bundle, and demo infrastructure.

Tested against OpenClaw 2026.3.28.

Install

npm install @plainid/openclaw-authorizer

Load it from your OpenClaw config:

{
  plugins: {
    enabled: true,
    load: {
      paths: ["./plugins/plainid-openclaw-authorizer"]
    },
    entries: {
      "plainid-authorizer": {
        enabled: true,
        config: {
          enabled: true,
          authorization: {
            mode: "agent-only"
          },
          pdp: {
            baseUrl: "https://plainid.example.com",
            clientId: "plainid-client",
            clientSecret: "replace-with-secret"
          }
        }
      }
    }
  }
}

How To Operate The Plugin

This publish target supports the same two runtime modes as the development repo.

Recommended Community Mode: agent-only

This is the default operating recommendation for marketplace/community users.

Use it when:

  • you want a pure plugin install
  • there is no sidecar bridge
  • PlainID should authorize the OpenClaw agent itself

Behavior:

  • the OpenClaw agentId is the PlainID primary identity
  • no secondary identity is sent
  • principal-context routes are not required
  • no sidecar or ingress upsert flow is needed

Minimal example:

{
  plugins: {
    enabled: true,
    entries: {
      "plainid-authorizer": {
        enabled: true,
        config: {
          enabled: true,
          authorization: {
            mode: "agent-only"
          },
          pdp: {
            baseUrl: "https://plainid.example.com",
            clientId: "plainid-client",
            clientSecret: "replace-with-secret"
          }
        }
      }
    }
  }
}

Sidecar-Assisted Mode: principal-context

Use it when:

  • your ingress authenticates an end user
  • PlainID must authorize on behalf of that user
  • the OpenClaw agent should be sent as a secondary identity

Behavior:

  • the authenticated user is the PlainID primary identity
  • the OpenClaw agentId is sent as a secondary identity
  • the plugin exposes principal-context internal routes
  • an ingress bridge or equivalent context-upsert flow is required

Minimal example:

{
  plugins: {
    enabled: true,
    entries: {
      "plainid-authorizer": {
        enabled: true,
        config: {
          enabled: true,
          authorization: {
            mode: "principal-context"
          },
          principalContext: {
            ingressSharedSecret: "replace-with-shared-secret",
            enableInternalRoute: true
          },
          pdp: {
            baseUrl: "https://plainid.example.com",
            clientId: "plainid-client",
            clientSecret: "replace-with-secret"
          }
        }
      }
    }
  }
}

This published package does not include the sidecar bundle itself. For the full compose deployment, ingress bridge, and demo infrastructure, use the companion development repo alongside this package.

Modes

agent-only

Use this when you want a pure plugin deployment with no sidecar and no principal-context bridge.

Behavior:

  • the PlainID primary identity is the OpenClaw agentId
  • no secondary identity is sent
  • principal-context routes are not registered
  • tool and model authorization do not depend on end-user context

Starter example: examples/agent-only.config.json5

principal-context

Use this when your deployment has an ingress or bridge path that can upsert authenticated user context into the plugin.

Behavior:

  • the PlainID primary identity is the authenticated user
  • the OpenClaw agentId is sent as a secondary identity
  • the plugin exposes /_plainid/context/upsert and /_plainid/context/health
  • high-risk authorization can require principal context

Starter example: examples/principal-context.config.json5

This package does not ship the compose stack or customer ingress bundle. If you want a sidecar-assisted deployment, keep using the companion development repo alongside this publish target.

Switching Modes

Change only:

{
  authorization: {
    mode: "agent-only" // or "principal-context"
  }
}

When switching from agent-only to principal-context, you must also provide:

  • a principal-context upsert path
  • a shared secret for that path
  • authenticated ingress that resolves the user identity before OpenClaw

When switching from principal-context back to agent-only, remove the ingress dependency and keep only the plugin config plus PlainID PDP credentials.

What The Plugin Enforces

  • PlainID authorization in before_tool_call
  • PlainID authorization in before_model_resolve
  • transcript redaction in tool_result_persist
  • optional prompt hints and optional experimental hooks

Build And Test

npm install
npm run build
npm test
npm run pack:check

Publish Checklist

  • verify openclaw.plugin.json matches the runtime schema
  • verify package.json contains openclaw.extensions, openclaw.compat, and openclaw.build
  • run npm run build
  • run npm test
  • run npm run pack:check
  • verify openclaw plugins install ./plainid-openclaw-authorizer-<version>.tgz succeeds in a clean OpenClaw state
  • verify README examples for both agent-only and principal-context
  • publish the package or submit it to the OpenClaw community repository

Security Notes

  • keep /tools/invoke blocked publicly
  • do not treat the plugin as a tenant isolation boundary
  • keep shared agents sandboxed
  • in principal-context mode, keep /_plainid/* private
  • use agent-only for community installs unless you already operate trusted

ingress and context-upsert infrastructure

  • keep experimental.enableBeforeDispatch = false unless you have verified hook coverage in your runtime
  • keep experimental.enableMessageSending = false unless you have verified hook coverage in your runtime

Files Included In The Published Package

  • dist/
  • openclaw.plugin.json
  • README.md
  • LICENSE
  • examples/

Related plugins

Browse all →