account-hygiene
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
Triage of 1Password sign-in attempts for one client account: pulling the sign-in feed over a window, grouping failures by user, category and country, separating password-guessing from MFA failures and firewall blocks, spotting successes from new countries after a run of
Claude Code
$ npx -y skills add wyre-ai/msp-claude-plugins --skill signin-triage --agent claude-code
Codex
$ npx skills add wyre-ai/msp-claude-plugins --skill signin-triage -a codex -y
Cursor
$ npx skills add wyre-ai/msp-claude-plugins --skill signin-triage -a cursor -y
Gemini CLI
$ npx skills add wyre-ai/msp-claude-plugins --skill signin-triage -a gemini-cli -y
GitHub Copilot
$ npx skills add wyre-ai/msp-claude-plugins --skill signin-triage -a github-copilot -y
OpenCode
$ npx skills add wyre-ai/msp-claude-plugins --skill signin-triage -a opencode -y
Windsurf
$ npx skills add wyre-ai/msp-claude-plugins --skill signin-triage -a windsurf -y
name: "1Password Sign-in Triage" description: > Triage of 1Password sign-in attempts for one client account: pulling the sign-in feed over a window, grouping failures by user, category and country, separating password-guessing from MFA failures and firewall blocks, spotting successes from new countries after a run of failures, and deciding what is noise and what goes to the client. The sign-in feed is admin-gated in Conduit and read-only. when_to_use: >- When an MSP needs to investigate failed or suspicious sign-ins to a client's 1Password account, or wants a periodic sign-in health check. Use when: 1password failed sign-in, 1password brute force, 1password mfa failure, 1password suspicious login, 1password sign-in report, or password manager login alerts.
A 1Password account is a high-value target: one compromised member can expose every shared vault they can open. The sign-in attempts feed records every attempt with its outcome, so an MSP can spot password guessing, MFA fatigue, and sign-ins from places the client does not operate. This skill reads that feed and produces a triage list. It cannot lock accounts or change policy; those are console actions.
| Tool | Purpose | Conduit tier | |---|---|---| | `1password_events_introspect` | Confirm the account and that the token has `signinattempts` | read | | `1password_signin_attempts_list` | The sign-in feed | admin | | `1password_users_list` | Resolve targets to users and their state | read | | `1password_audit_events_list` | Optional: what a suspicious session did next | admin |
The sign-in feed is admin-gated in Conduit. Without the admin tier, stop and say so.
Each attempt carries a `category` (the outcome), a more specific `type`, the target user, the client app and the location (including country). 1Password documents categories such as `success`, `credentials_failed`, `mfa_failed`, `sso_failed`, `firewall_failed` and `modern_version_failed`. Group on the values the feed actually returns rather than assuming this list is complete.
| Pattern | Likely meaning | |---|---| | Many `credentials_failed` on one user, few countries | Forgotten password, or guessing from one source | | `credentials_failed` across many users from one country | Password spraying | | `mfa_failed` on a user who also has `success` on credentials | The password is known to someone; the second factor stopped them | | `firewall_failed` | The client's 1Password firewall rules blocked the attempt; the control worked | | `modern_version_failed` | An outdated 1Password app; a support issue, not a security one | | `success` from a country with no prior activity | Travel, VPN, or compromise; needs confirmation |
1. **Introspect.** Call `1password_events_introspect`; confirm the account and that `signinattempts` is among the features. 2. **Pull the window.** Call `1password_signin_attempts_list` with `start_time` (default: 7 days ago for a routine check, 24 hours for an active alert) and `limit` 200. Page with `cursor` while `has_more` is true. 3. **Group.** Count by category, then by target user and country within each failure category. 4. **Baseline countries.** From the `success` attempts in the window, list each user's usual countries. A success outside that set is a finding; a failure outside it is context. 5. **Correlate.** For a user with `mfa_failed`, or failures followed by a success from a new country, pull `1password_audit_events_list` for the same period and look for actions by that user after the success (invites, vault sharing, group changes). 6. **Resolve users.** Check flagged users against `1password_users_list` to see whether they are `ACTIVE` or `SUSPENDED`. Attempts against a suspended user are someone trying an old account. 7. **Report.**
password, spraying across users. Give user, times (in the client's time zone), country, client app and count.
trusted devices, sign out sessions, tighten firewall rules or MFA policy.
large accounts.
policy from the feed; recommend the client confirm it in the console.
One command to supercharge Claude Code for MSP workflows. Then restart Claude Code. That's it. Documentation: wyre-ai.github.io/msp-claude-plugins
Periodic hygiene review of a client's 1Password account for QBRs and license true-ups: reconciling active and suspended seats…
1Password MCP fundamentals through Conduit: the region plus two independent credential halves (Events Reporting token, Users API…
How to review a departing or departed user's 1Password footprint with the read-only tools: confirm the seat is suspended, find…
3CX's live-operations surface: read-only visibility into active calls, recordings, voicemail, department and queue membership,…
3CX's read-only directory surface: resolving a caller by email or by exact extension, searching the PBX's own phonebooks,…
3CX's system-and-configuration surface: server time, PBX event log and application log search, service status, database schema…
You MUST use this before any creative work - creating features, building components, adding functionality, modifying behavior, or…
Ask which skill or flow fits your situation. A router over the skills in this repo.