Loading…
We use a strictly-necessary cookie to keep you signed in. Accept all also allows optional cookies for analytics, our in-app support chat, and marketing (including ad audience cookies and email open tracking). See our Privacy Policy for details. You can change your choice anytime under Settings → Privacy.
An owner can let one of their agents sign in to the owner's AstraSync dashboard and work there with the owner's access — narrowed by the agent's policy. The session is tied to one machine in the organisation's fleet, signs in through the agent's Workforce Guard checkpoint, and waits for the owner's passkey wherever the policy asks.
Dashboard access is off for every agent until you allow it. Because an agent's policy is fixed per version, you turn it on with Upgrade (agent page → Upgrade): this issues a new version with a new ASTRA-id and retires the old one. The agent's Workforce Guard checkpoint follows it to the new version, at the same URL.
In the policy editor, switch on Dashboard access. The defaults are:
Under the hood these are ordinary policy actions — dashboard.signin, dashboard.read and dashboard.change — on resources named dashboard:<area> (for example dashboard:agents, dashboard:endpoints, dashboard:visit-intelligence). Narrow the agent to particular areas with dashboard:<area> entries under Scope. The session lasts 30 minutes by default, or the policy's maximum session duration (at most 8 hours).
Use an enrolment token from Enterprise Governance → Fleet. Two options:
# One user on this machine (default) — no administrator rights needed
astrasync guard enroll <token>
# The whole machine (typically pushed by MDM) — needs administrator rights
astrasync guard enroll <token> --systemastrasync guard browse \
--checkpoint <checkpoint public URL> \
--slug <the agent's checkpoint slug> \
[--upstream <AstraSync API upstream slug, default astrasync-api>] \
[--port <local proxy port>] \
[--host <extra host that should get the device credential>]The command:
For a Playwright-driven browser, point it at the proxy the command prints:
const browser = await chromium.launch({ proxy: { server: 'http://127.0.0.1:<port>' } });
const context = await browser.newContext({ ignoreHTTPSErrors: true }); // the proxy's local certificate
const page = await context.newPage();
await page.goto('<the one-time sign-in URL>');Keep the command running for the whole session; Ctrl-C stops the proxy.
Every request in the session must carry that machine's device credential. The session ends when:
202 OWNER_APPROVAL_REQUIRED with an approvalId; the dashboard shows a waiting dialog and retries once after the owner approves. An approval covers that one request only./auth/*), passkeys, minting or rotating any key, token or credential, verify-access, and internal routes. Anything the dashboard doesn't map to an area is refused too./agent-session page shows the session.DEVICE_CREDENTIAL_REQUIRED — the request didn't come from an enrolled machine (run astrasync guard browse).DEVICE_NOT_IN_ORG — the machine is revoked or enrolled in a different organisation from the agent's.AGENT_SESSION_DENIED — the agent's policy doesn't allow dashboard sign-in (turn on Dashboard access with Upgrade).AGENT_NOT_ACTIVE — the agent is retired, suspended or not yet approved.AGENT_SESSION_FORBIDDEN — the route is never available to an agent session.