# Login health dashboard for every site your agents sign into

> See which saved logins are healthy, stale or broken, re-check any of them in one click, and sign back in yourself without ever sharing a password.

- Workflow type: app
- Services: Kernel, Slack Bot, General Input Database
- Categories: Engineering, Operations
- Published: 2026-08-31

## What it does

- One table of every saved login your agents use, showing the site, who on the team owns it, when it was last verified and whether it is healthy, stale or broken, with the most overdue checks sitting at the top.
- A Check now button on any row sends a background agent to open that site in a real cloud browser using the saved session, then confirm you are still signed in and keep a screenshot as proof.
- When a login is broken, a Log in now button opens a live browser window right inside the page so a person signs in by hand, including any code from their phone, and the signed-in state is saved back for agents to reuse.
- A Check all button sweeps every login before a big overnight run, and the owner gets a Slack message the moment one of theirs flips to broken.

## What you'll need

- A Kernel account, which is where the cloud browsers and the saved logins your agents reuse actually live
- A Slack workspace, so the right person hears about it when one of their logins breaks
- A place to keep the list of logins and their check history, which the app sets up for you in your General Input database
- The logins themselves: you sign into each site once, by hand, in the live browser window

## Prompt

Build me an app that shows the health of every saved login our browser agents rely on in Kernel. Our agents fail silently the moment a site logs them out, so I want one screen that tells me which logins still work, proves it with a screenshot, and lets a person fix a broken one by hand in about thirty seconds.

The main screen is a table of saved browser profiles, one row per site and account. Each row shows the site the profile belongs to, who on our team owns it, when it was last verified, and a health badge reading healthy, stale or broken. Sort it so the most overdue checks sit at the top. Treat a profile as healthy when the last check confirmed we were signed in and that check is inside the staleness window, stale when the last check passed but is older than the window, and broken when the last check landed on a login screen or the check itself failed. Make the staleness window a setting with a default of seven days. Each row also stores the account page URL that the check should visit, and clicking a row opens the history of past checks with their screenshots.

Put a Check now button on every row that starts a background agent for that one profile. The agent uses Kernel Create Browser Session with the row's profile attached so the saved session state loads, navigates to the site's account page, drives the page with Execute Batch Computer Actions, and takes a screenshot with Capture Browser Screenshot. It then judges from the screenshot and the page whether we are still signed in or got bounced to a login screen, writes the verdict, the timestamp and the screenshot back into the app so the row and its badge update, and shuts the session down with Delete Browser Session. Use Click Mouse in Browser and Type Text in Browser for any single steps the batch does not cover, and always delete the session even when the check fails, so a bad check never leaves a browser running.

When a login is broken, show a Log in now button that opens Kernel's live browser view embedded right in the page. Create the session with the profile attached and save changes enabled, then embed the returned live view URL in an iframe so a person can drive the real browser and sign in by hand, including typing any MFA code from their phone. When they confirm they are done, save the session state back to the profile so agents can reuse it, use Create Profile if this site does not have a profile yet, then close the session and immediately run a verification check so the row flips back to healthy with fresh proof. Do not use browser pools for any of this: pooled browsers load their profile read-only and would silently throw away the login that was just done by hand.

Add a Check all button at the top that sweeps every profile before a big overnight run, updating rows as each result comes back rather than making me wait for the whole sweep. Whenever a login flips to broken, send the profile owner a Slack message with the site, when it last worked and a link back to this app, using the Slack Bot Send a Message operation. Only message on the flip into broken, not on every repeat check of an already broken login, so a sweep of stale profiles does not spam anyone.

The rule to bake in everywhere is that nobody ever types a password into this app. There is no password field anywhere in the UI. People type credentials into the live browser only, and the app stores exactly four things: the site, the owner, the verification history and the screenshots. Persist the profile register and the verification history in the General Input database, and keep the screenshot images in file storage with their keys in the database rather than stuffing image data into a column. You can use List Browser Sessions and Get Browser Session to show any sessions this app currently has open, so nothing is left running by accident.

## How to customize

- Change how long a login is allowed to go unchecked before the app marks it stale, which starts at one week
- Choose who hears about a broken login: the teammate who owns it, or a shared ops channel everyone watches
- Set the account page each site gets checked on, so the check lands on a screen that clearly shows whether you are signed in

## FAQ

### Do I have to put our passwords into this app?

No, and that rule is built in on purpose. Passwords are only ever typed into the live browser window, never into the app. The app stores the site, the owner, the history of checks and the screenshots, and nothing else.

### What happens when a site asks for a two-factor code?

You handle it yourself. The live browser opens inside the page sitting on the login screen, you type the code from your phone the same way you normally would, and once you are through, that signed-in session is saved for your agents to reuse.

### How does it decide a login is broken?

It opens the site in a real browser using the saved session and looks at the account page. If the page loads as a signed-in account, the login is healthy. If it gets bounced to a login screen instead, the login is marked broken and a screenshot is kept so you can see exactly what happened.

### Can I check everything at once before a big overnight run?

Yes, that is what Check all is for. It sweeps every saved login and the table updates as each result comes back, so you can start a long run knowing nothing is about to fail halfway through.

### Why not just let the agent fix the login itself?

Most broken logins need something only a person has, like a code from a phone or a fresh password. Handing the browser to a human for thirty seconds is faster and safer than giving an agent credentials, and the agent picks the session straight back up afterwards.

Use this prompt in General Input: https://www.generalinput.com/prompts/login-health-dashboard-for-every-site-your-agents-sign-into