> ## Documentation Index
> Fetch the complete documentation index at: https://docs.introw.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Access & Security

> Control who can see and do what, on both sides of the partnership - internal team roles and permissions, partner team roles, and single sign-on for your team and your partners.

export const Headless = ({prompts = []}) => {
  const PromptRow = ({prompt}) => {
    const [copied, setCopied] = useState(false);
    const copy = () => {
      try {
        navigator.clipboard?.writeText(prompt);
      } catch {}
      setCopied(true);
      setTimeout(() => setCopied(false), 1600);
    };
    return <div className="group flex items-center justify-between gap-3 px-4 py-3 transition-colors hover:bg-[#FD90FF]/[0.06]">
        <span className="text-sm leading-relaxed text-zinc-700 dark:text-zinc-200">{prompt}</span>
        <button type="button" onClick={copy} aria-label={copied ? "Copied to clipboard" : "Copy prompt"} className={`shrink-0 rounded-md p-1.5 transition-all hover:bg-[#FD90FF]/10 focus:opacity-100 focus:outline-none ${copied ? "text-[#FD90FF] opacity-100" : "text-zinc-400 opacity-0 group-hover:opacity-100 dark:text-zinc-500"}`}>
          {copied ? <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <path d="M20 6L9 17l-5-5" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg> : <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <rect x="9" y="9" width="11" height="11" rx="2" stroke="currentColor" strokeWidth="2" />
              <path d="M5 15V5a2 2 0 0 1 2-2h10" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg>}
        </button>
      </div>;
  };
  return <>
      <p>
        Introw is <strong>headless</strong> by design: run everything here in plain language from Claude, ChatGPT,
        Slack, Teams, or your own CRM through Introw's <a href="/features/developer/mcp">MCP server</a>, with every
        action written straight back to your CRM source of truth. The portal is one surface, never the only one.
      </p>

      {prompts.length > 0 ? <div className="not-prose my-6 overflow-hidden rounded-2xl border border-zinc-200/80 bg-white shadow-sm dark:border-white/10 dark:bg-white/[0.02]">
          <div className="flex items-center gap-2 border-b border-zinc-200/80 bg-gradient-to-r from-[#FD90FF]/10 via-[#FD90FF]/5 to-transparent px-4 py-2.5 dark:border-white/10">
            <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4 text-[#FD90FF]" aria-hidden="true">
              <path d="M12 2.5l2 5.5 5.5 2-5.5 2-2 5.5-2-5.5L4.5 10l5.5-2 2-5.5z" fill="currentColor" />
              <path d="M18.5 14l1 2.6 2.6 1-2.6 1-1 2.6-1-2.6-2.6-1 2.6-1 1-2.6z" fill="currentColor" opacity="0.55" />
            </svg>
            <span className="text-xs font-semibold uppercase tracking-wider text-zinc-500 dark:text-zinc-400">
              Try it from your LLM
            </span>
          </div>

          <div className="flex flex-col divide-y divide-zinc-100 dark:divide-white/[0.06]">
            {prompts.map(prompt => <PromptRow key={prompt} prompt={prompt} />)}
          </div>

          <a href="/headless" className="flex items-center justify-between gap-2 border-t border-zinc-200/80 px-4 py-2.5 text-sm font-medium text-zinc-600 no-underline transition-colors hover:text-[#FD90FF] dark:border-white/10 dark:text-zinc-300">
            <span>See the full headless playbook</span>
            <svg viewBox="0 0 24 24" fill="none" className="h-4 w-4" aria-hidden="true">
              <path d="M5 12h14M13 6l6 6-6 6" stroke="currentColor" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
            </svg>
          </a>
        </div> : <Card title="See the headless motion" icon="wand-magic-sparkles" href="/headless">
          The agentic playbook - lifecycle deep dives and a Claude Code skill library that run your partner program
          from Claude, ChatGPT, Slack, and your CRM.
        </Card>}
    </>;
};

> Every partner program runs on trust, and trust starts with access. Decide exactly what your internal team can do, what each partner's people can do, and how everyone signs in, all configured by your team without engineering.

## What this area does

Access and security covers two capabilities. Team management is where you invite your internal team,
assign roles built from clear permission categories, and limit users to the partners they own. It is
also where you define partner team roles and assign the people who manage each partner. Single sign-on
lets your own team and your partners log in through your identity provider, so access follows your
existing security policies.

Both are configured by partner operations and admins directly, with no code, and the permissions you
set apply consistently across every surface a user touches.

## Why it matters

* **Low total cost of ownership** - Roles, permissions, and SSO are configured by your team, not engineering.
* **CRM-native** - Partner and visitor access is scoped to the CRM-synced data each partner owns, and no external user ever needs a CRM seat, so the CRM admin keeps control of who can reach which records.
* **Trust and accuracy** - The right people see the right data, and sign-in follows your security policy.

<Note>
  These permissions also scope Introw's AI agents. When an assistant connects over [MCP](/features/developer/mcp), its data access follows the signed-in user's partner scope - a partner's assistant reaches only that partner's data. What an agent may do on its own is governed by a vendor-configured [capability matrix](/headless#governance-and-trust), with sensitive actions kept behind human approval.
</Note>

## How it fits together

Sign-in and roles govern every surface a user touches, including AI agents:

```mermaid theme={"theme":{"light":"github-light","dark":"github-dark"}}
flowchart LR
  idp["Your identity provider"] -->|"SSO"| introw["Introw"]
  roles["Roles and permissions"] --> introw
  introw --> surfaces["Every surface"]
  introw --> agents["AI agents, same scope"]
```

## Capabilities

<CardGroup cols={2}>
  <Card title="Team Management" icon="users-gear" href="./team-management">
    Internal roles, permissions, and partner team roles.
  </Card>

  <Card title="Single Sign-On" icon="key" href="./sso">
    SAML sign-in for your team and your partners.
  </Card>
</CardGroup>

## Who works in this area

<CardGroup cols={2}>
  <Card title="CRM Administrator" icon="user">
    Owns identity, access, and security policy.
  </Card>

  <Card title="Partner Operations" icon="user">
    Configures roles and partner team access.
  </Card>
</CardGroup>

## Headless

<Headless
  prompts={[
"Reassign Acme's partner manager to another team member.",
"Who owns each of our partners?",
]}
/>

## All guides

{/* ROLLUP:START - generated content goes here */}

<CardGroup cols={2}>
  <Card title="Set up internal SSO for your team" icon="book-open" href="/features/access/sso/guides/set-up-internal-sso">
    Connect your identity provider, map SAML attributes to user fields, set a default role, and switch your team to single sign-on.
  </Card>

  <Card title="Set up portal SSO for partners" icon="book-open" href="/features/access/sso/guides/set-up-portal-sso">
    Let partners sign in to your portal through their own identity provider with SAML, using your portal's service provider URLs and the SSO-only login switch.
  </Card>

  <Card title="Access multiple organisations" icon="book-open" href="/features/access/team-management/guides/access-multiple-organisations">
    Use one Introw login to create, join, and switch between multiple independent organisations, with data kept strictly siloed.
  </Card>

  <Card title="Create an internal role" icon="book-open" href="/features/access/team-management/guides/create-an-internal-role">
    Build a reusable role from permission categories, choose an access type, optionally scope it to a user's assigned partners, then set notifications and assign users.
  </Card>

  <Card title="Invite a team member" icon="book-open" href="/features/access/team-management/guides/invite-a-team-member">
    Add a colleague to your team in the right role, understand paying vs CRM-only seats, and manage their status from invited through active.
  </Card>

  <Card title="Set up partner team roles" icon="book-open" href="/features/access/team-management/guides/set-up-partner-team-roles">
    Define the roles people hold on a partner, sync them to your CRM as a single owner or a multi-member field, and assign people one at a time or in bulk.
  </Card>
</CardGroup>
