# What is PENGUARDS?

![PENGUARDS](/files/vRChTIPwUbicU9KDQGAQ)

PENGUARDS is a supervisory extension for Abstract Global Wallet (AGW). It provides a consolidated dashboard of every session key associated with the connected wallet, evaluates the residual risk presented by each permission set, and supplies controlled revocation workflows.

The extension translates the technical elements of AGW sessions into clear, auditable information so that security teams and individual users can make timely decisions without resorting to block explorers or bespoke scripts.

## Key outcomes

* **Immediate visibility** - every active session key is enumerated as soon as the wallet is connected; no manual querying is required.
* **Risk transparency** - severity indicators and concise narratives describe which keys demand attention and the reasons for the assessment.
* **Controlled remediation** - individual or bulk revocation is available within the popup, providing confirmation at each step.
* **Operational context** - issuer details, signer information, originating transactions, and explorer shortcuts are available for further validation.

## Recommended usage

* After authorising a new application that requested session-key access.
* As part of scheduled wallet hygiene reviews.
* Whenever unexpected behaviour is observed and session exposure needs to be verified.

## Typical workflow

1. Launch the extension from the Chrome toolbar.
2. Connect the wallet and grant read access to session data.
3. Review the risk banner and prioritise the highest-severity entries.
4. Expand individual cards to inspect policy scope, limits, and registry status.
5. Execute targeted or bulk revocations as required.

The result is a single, purpose-built interface for assessing and managing AGW sessions. You can install the published build directly from the Chrome Web Store at [https://chromewebstore.google.com/detail/bjaelgkckpgbjipdeocgkiibadphibkk](https://chromewebstore.google.com/detail/bjaelgkckpgbjipdeocgkiibadphibkk?utm_source=item-share-cb).


# Quick Start

Follow the checklist below immediately after installing PENGUARDS from the [Chrome Web Store listing](https://chromewebstore.google.com/detail/bjaelgkckpgbjipdeocgkiibadphibkk?utm_source=item-share-cb).

## 1. Pin the extension

1. Open the Chrome extensions menu by selecting the **Extensions** button in the Chrome toolbar.
2. Locate **PENGUARDS** and select the **Pin** control to keep it visible in the toolbar.

## 2. Establish the wallet connection

1. Open the popup by selecting the PENGUARDS icon.
2. Choose **Connect wallet**.
3. Approve the "read session keys" request presented by Abstract Global Wallet (AGW).

![Connect wallet prompt](/files/BT5Hwt7DiwQVXtal5y2M)

The permission is stored per Chrome profile. If the wallet disconnects, the extension will request access again the next time the popup is opened.

## 3. Review the session inventory

* The header banner highlights the highest severity rating currently detected.
* Each card summarises a single session key: issuing application, signer, severity, expiry, and policy counts.
* Use the provided filters (where enabled) to focus on a specific severity band.

## 4. Execute remediation actions

* Select **Revoke session** to retire a single key.
* Select **Revoke all** to terminate every active session in one operation.
* Explorer shortcuts are available for due diligence prior to revocation.

## 5. Post-action expectations

* Once the transaction confirms, the revoked session is removed from the list.
* The banner recalculates automatically to reflect the updated posture.
* Subsequent openings of the popup will trigger a fresh synchronisation.


# Core Features

PENGUARDS concentrates its interface around six capabilities that support professional session oversight.

## 1. Comprehensive session ledger

* Enumerates every session key linked to the connected wallet in a structured, scrollable list.
* Presents issuer identity, signer address, originating transaction, and current validator status (Active, Expired, Closed).
* Provides card-level controls to copy the session hash, copy the signer, open the transaction on abscan, or initiate revocation.

## 2. Risk-prioritised presentation

* Automatically orders entries from Critical to Info so attention is directed to the most exposed sessions first.
* Severity badges disclose the score, label, and percentage without requiring an expanded view.
* The "Risk signals" summary identifies the dominant risk drivers (for example, "No expiry configured", "Unlimited spend permitted", "Approval target not reviewed").

![Severity badge and risk signals](/files/5aCH8aKcru1i5QsVf7MX)

## 3. Interpretable permission details

* Call and transfer policies are rendered in precise language describing target, selector, spend limits, and parameter constraints.
* Tooltips expose allowance periods, value caps, and registry status to aid rapid interpretation.
* Contextual help links route to the handbook for deeper reference when needed.

![Policy detail view](/files/KwqxDChzMJpsQChnZF7d)

## 4. Controlled revocation workflows

* Each session card offers a guarded **Revoke session** action with explicit confirmation to mitigate accidental execution.
* The global **Revoke all** button orchestrates bulk clean-up in a single flow.
* A dedicated revoke window persists while wallet confirmation is pending and reports success, failure, or cancellation outcomes.
* Toast notifications inside the popup confirm completion for audit purposes.

![Revoke workflow](/files/DNTWTFKKZsr42lUCR5ew)

## 5. Enriched context via Abstract Portal

* Integrates portal metadata (application name, verification tier, iconography) to assist with rapid identification.
* Surfaces contract metadata, verified selectors, and bytecode hints so the scope of each session is unambiguous before revocation.

## 6. Operational refinements

* **Copy utilities** for hashes, signers, and explorer URLs.
* **Automatic refresh** after each revoke and whenever the popup is reopened.
* **Keyboard affordances** (e.g., `Esc` to close modals) for efficient navigation.
* **Accessibility support** with high-contrast styling and screen-reader labels on signal and action elements.


# Risk Insights & Score

PENGUARDS assigns each session key a quantitative risk score and converts the result into visual indicators that support rapid triage.

## Overall indicator (brand glow)

* The penguin emblem in the top-left corner of the header illuminates **red**, **amber**, or **green** based on the most severe active session.
* Hovering over the emblem reveals a concise status summary such as "1 critical session detected" or "All sessions meet best-practice thresholds."

![Brand glow states](/files/bvUTnxzmIrRBx45xvMof)

## Session badges

Every session card contains a badge detailing:

* **Severity label** (`Critical`, `High`, `Medium`, `Low`, `Info`).
* **Raw score** (for example, `42 / 100`).
* **Percentile rank** (for example, 42nd percentile among this wallet's sessions), which also drives the default sorting order.

## Principal risk signals

* The "Risk signals" panel lists the top contributing factors—such as "Unlimited spend permitted," "Approval target not reviewed," or "Very long / effectively no expiry."
* Selecting "View all signals" opens the complete breakdown aligned with the dimensions described below.

![Risk signal summary](/files/5aCH8aKcru1i5QsVf7MX)

## Detailed permission breakdown

Expand a session card to see:

* **Call policies:** contract address, function signature, per-use spend caps, and parameter constraints.
* **Transfer policies:** recipient/target, per-use caps, lifetime or periodic value limits (reset period shown only when `LimitType = Allowance`).
* **Fee limits & expiration:** lifetime gas budget; reset timers appear only when `feeLimit.limitType = Allowance`; expiration timestamp when applicable.
* **Registry status:** whether the call or approval is marked Allowed, Unset, or Blocked on the Abstract Session Key Policy Registry.

Tooltips give extra context, and links let you cross-check anything directly on abscan or Abstract documentation.

![Permission detail](/files/KwqxDChzMJpsQChnZF7d)

## Severity reference

* **Critical (0-29%)** - immediate remediation required (blocked approvals or open-ended permissions).
* **High (30-49%)** - significant exposure that should be tightened promptly.
* **Medium (50-74%)** - manageable but warrants revision in the near term.
* **Low (75-89%)** - largely aligned with guidance; continue periodic reviews.
* **Info (90-100%)** - conforms to best practices.

The sections below describe how those severities are produced.

## How the score is calculated

PENGUARDS mirrors Abstract's mainnet enforcement rules when computing each session's score.

### Data sources

| Source                                     | Purpose                                                                                                                                                                                     |
| ------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Session config (`createSession` payload)   | Provides signer, expiry, fee limits, call/transfer policies, constraints, and approval selectors.                                                                                           |
| Session Key Policy Registry (`0xA146…b93`) | Confirms whether each `(target, selector)` and `(token, spender)` pair is Allowed, Unset, or Blocked; the UI shows the decoded spender alongside the verdict for approvals.                 |
| Session Key Validator                      | Returns the live status (`Active`, `Expired`, `Closed`). The client computes `getSessionHash(sessionConfig)` locally and compares it with the validator's stored hash to confirm integrity. |
| Optional telemetry                         | Flags reused signers or unusually high counts of active sessions.                                                                                                                           |

Mainnet sessions run through every registry check. Testnet sessions skip the enforcement but still surface warnings so you can practise safer setups.

### Dimensions weights

| Dimension               | Weight | What earns points                                           | What reduces them                                                       |
| ----------------------- | ------ | ----------------------------------------------------------- | ----------------------------------------------------------------------- |
| Registry compliance     | 15     | Policies marked **Allowed**                                 | Blocked entries cap the total at 60; Unset gets half credit on mainnet. |
| Approval safety         | 15     | Spender is pinned **and** `(token, spender)` is **Allowed** | Missing pins, `Blocked`, or failed lookups drop to 0 and cap at 50.     |
| Constraints coverage    | 12     | Sensitive params have `Equal`/range constraints             | No metadata or unconstrained inputs score near zero.                    |
| Scope breadth           | 10     | Few targets/selectors, no generic routers                   | Broad scopes or `execute` selectors lower the score.                    |
| Native value protection | 12     | Low per-use spend and finite lifetime caps                  | Unlimited or high limits tank the score.                                |
| Fee budget              | 6      | Tight lifetime/allowance gas budgets                        | Unlimited or very high budgets score poorly.                            |
| Expiration              | 10     | Short lifetimes (≤ 24h best)                                | Long or missing expiries lose credit.                                   |
| Allowance period        | 3      | Short reset windows for `LimitType.Allowance`               | Missing or very long periods score low.                                 |
| Transfer policies       | 8      | Tight caps, or no transfer policy at all                    | Unlimited transfers hurt the score.                                     |
| Session liveness        | 5      | Validator says `Active` and hash matches                    | Expired/unknown states lose points.                                     |
| Signer reuse            | 2      | Unique signer per wallet/session                            | Reused signers for multiple wallets score zero.                         |
| Open session count      | 2      | ≤ 3 active sessions                                         | More than 3 drops to zero.                                              |

### Partial credit for approvals

* **Unset** spender in the registry ➝ partial credit (5/15) plus a warning.
* **Multi-spender allowlist** (small curated list) ➝ partial credit and a surfaced warning so reviewers notice multiple spenders.
* **Blocked or failed lookup** ➝ 0 points and the score is capped at 50.

### Hard gates ("caps")

* **Blocked registry policies** limit the overall score to 60 until removed.
* **Unsafe approvals** (spender not pinned, blocked, or lookup failed) limit the overall score to 50.

When a cap is active you'll see a badge such as `blockedRegistry` or `approvalSafetyHardGate` listed in the session detail.

### Severity mapping

Scores convert to severities using these bands:

| Score  | Severity   |
| ------ | ---------- |
| 90-100 | `Info`     |
| 75-89  | `Low`      |
| 50-74  | `Medium`   |
| 30-49  | `High`     |
| 0-29   | `Critical` |

The brand glow uses the worst severity detected so you always see the highest exposure immediately.

### Interpreting the breakdown

Inside each expanded session card you'll find:

* A per-dimension list (e.g. "Registry 12/15 - 2 Unset policies").
* Warnings for unset approval spenders, multi-allowlists, or missing constraints.
* Explorer shortcuts to review the relevant policy or transaction on abscan.

Focus on dimensions below \~50%; those usually offer the quickest wins to improve your score.

### How often the score updates

* Every time you open the popup or hit **Refresh**.
* Immediately after a revoke confirms (the session disappears or drops to 0).
* Periodically while the popup stays open, so expirations and limits stay fresh.


# Revoking Sessions Safely

Revocation is the primary control for retiring unused or high-risk sessions. The steps below explain the available pathways and safeguards.

## Revoke an individual session

1. Expand the session card (optional) to review scope and limits.
2. Select **Revoke session**.
3. Confirm the action in the prompt presented by PENGUARDS.
4. Approve the transaction within Abstract Global Wallet.
5. Monitor the status banner as it progresses from:
6. Awaiting wallet
7. Broadcasting
8. Confirmed The session is removed once the validator reports it closed.

If the transaction is cancelled inside AGW, the dashboard remains unchanged and the session stays available for future action.

![Per-session revoke confirmation](/files/DNTWTFKKZsr42lUCR5ew)

## Revoke multiple sessions at once

* Select **Revoke all** on the toolbar when a full reset is required.
* The extension queues each active session and processes them sequentially within the same task window.
* Progress counters (for example, "2 / 5 sessions revoked") provide continuous visibility.

![Bulk revoke workflow](/files/t7KgXad1B8cIusG9M2EM)

## About the revoke task window

* Opens automatically and remains visible while any revocation is pending.
* Persists even if browser focus shifts to another tab or to the wallet modal.
* Offers retry and close controls when a transaction fails or is cancelled.
* Closes itself once all queued revocations have completed—successfully or otherwise.

## Notifications & error recovery

* Toast notifications summarise each outcome (for example, "3 sessions revoked" or "Revoke failed: user rejected").
* If the wallet declines the transaction, the session remains on the dashboard and the revoke control resets for a future attempt.
* In rare instances where Chrome blocks creation of the task window, PENGUARDS reverts to an inline flow so the revocation can still be completed.

> Revocation is permanent. Re-establishing access requires returning to the originating application and issuing a new session key.


# Privacy & Data Use

PENGUARDS is designed for a single purpose: surfacing Abstract Global Wallet session keys, explaining their scopes in readable language, scoring risk, and guiding revocation. The extension follows Chrome Web Store Program Policies and keeps every data flow transparent.

## Information We Access

* **Wallet address and Abstract profile metadata** - When you connect a wallet, the address is sent to `https://backend.portal.abs.xyz/api` (the Abstract Portal backend operated by Cube Inc.) to retrieve the associated profile name, avatar metadata, and tier so you can confirm the correct account. The response remains inside the popup and is cached in React Query memory for up to five minutes.
* **Session configuration data** - Active session keys, validator verdicts, expiry windows, spend limits, and constraint scopes are read from the Abstract Session Key Validator via `https://api.mainnet.abs.xyz/` so the extension can compute risk scores and display revoke actions. These details are derived from on-chain logs and public Abstract APIs.
* **Function signature lookups** - The selector for each allowed contract call is sent to `https://www.4byte.directory/` to resolve a human-readable signature, helping translate raw policies into natural language.
* **Local cache** - Non-sensitive metadata (contract names, function signatures, bytecode string hints) may be stored in memory or `localStorage` with explicit TTL-based eviction. Wallet secrets, private keys, seed phrases, authentication cookies, personal communications, location data, and browsing history are never collected or stored.

All network requests use HTTPS. The extension contains no analytics SDKs, advertising frameworks, or background tracking scripts.

## How We Use Information

* Display the connected wallet's Abstract profile so you can visually confirm the account in scope.
* Render readable descriptions of session permissions, risk scores, and severity indicators.
* Invoke Abstract revocation workflows to close session keys you no longer trust.

Information is used strictly for these purposes. It is not sold, shared with unrelated third parties, or repurposed for advertising, credit decisions, or behavioral profiling. Any processing of personal data by Abstract itself is governed by their published policies at <https://www.abs.xyz/privacy-policy> and <https://www.abs.xyz/terms-of-service>.

## Your Controls

* Disconnect the wallet in the popup to stop further profile lookups.
* Clear cached metadata using Chrome's extension storage tools.
* Remove the extension to delete all locally cached information.

## Contact & Updates

Policy updates will adjust the "Last updated" date and ship with each new release. For privacy inquiries, email `unicorn@zer0luck.kr`. You can also reference the official Abstract privacy resources linked above for platform-level data handling practices.


# Help & FAQ

### Is PENGUARDS an official Abstract project?

No. It is an independently developed companion built on top of Abstract's public tools from [build.abs.xyz](https://build.abs.xyz/).

### Which browsers are supported?

Any Chromium-based browser with Manifest V3 support (for example, Chrome 120+, Brave, Edge, Arc). Safari and Firefox are not supported at this time.

### What permissions does it request?

Host access to `*.abs.xyz` and `www.4byte.directory` only. Clipboard, tab, and background host permissions are not requested.

### Why does it need my wallet address?

The address is required to retrieve Abstract Portal profile information and session events. No user-identifying data is stored on remote servers; refer to [Privacy & Data Use](/privacy) for details.

### How often does it refresh sessions?

* Whenever the popup is opened.
* Immediately after a revocation completes.
* You may also select the **Refresh** icon (top-right) to initiate an on-demand synchronisation.

### What do the severity colours mean?

* **Red - Critical/High:** broad permissions or blocked approvals. Immediate remediation recommended.
* **Amber - Medium:** elevated risk that warrants investigation.
* **Teal/Blue - Low/Info:** limited exposure; retain but review periodically. See [Risk Insights & Score](/risk-insights) for the underlying calculation.

### The popup reports "Failed to load sessions." What should I do?

* Verify your network connection (some captive portals block RPC traffic).
* Reopen the popup or select **Retry**.
* If the issue persists, disconnect and reconnect the wallet.
* On rare occasions the Abstract validator may be unavailable; retry once service is restored.

### Can I inspect the UI without connecting my wallet?

Not currently. The Chrome Store build requires a live wallet connection so the dashboard reflects your actual sessions. For demonstrations, consider provisioning a low-risk wallet with minimal funds.

### Are revoke actions reversible?

No. Revocation closes the session on-chain. Re-establishing access requires returning to the issuing application and creating a new session key.

### How do I clear cached metadata?

* Open `chrome://extensions`.
* Locate **PENGUARDS**, select **Details**, then **Service worker** -> **Inspect**.
* In the DevTools window, open the **Application** tab and select **Clear storage**.
* Alternatively, remove the extension to eliminate all cached data.

### Will PENGUARDS ever send transactions without asking?

Never. Wallet signatures are requested only when you explicitly initiate a revoke and confirm the prompt.

### Does revoking remove keys immediately?

Yes. After the transaction is confirmed, the session transitions to "Closed" and disappears from the dashboard during the next refresh.

### Can I run more than one wallet at a time?

PENGUARDS reflects the sessions for the wallet currently active in AGW. Switch wallets inside Abstract, then reopen the popup to view the updated account.

### What happens if I close the revoke window too early?

PENGUARDS issues a warning before the window closes. If it is closed regardless, the underlying transaction continues within the wallet. Reopen the popup to obtain the latest status.


