← Back to Notte

How does Notte handle authentication persistence and session profiles across browser sessions?

Notte provides session profiles that persist cookies, localStorage, IndexedDB, and other browser state across invocations. This means you can log in once and reuse that authenticated state for subsequent automation runs.

How session profiles work:

  1. Create a session with a named profile
  2. Navigate and log in (manually or via an agent)
  3. The session state is saved when the context-managed session exits
  4. On the next invocation, reference the same profile - all cookies and storage are restored

Example:

from notte_sdk import NotteClient

client = NotteClient()
profile = client.profiles.create(name="my-saas-login")
vault = client.Vault(vault_id="example-creds")

# First run: log in and save browser state to the profile
with client.Session(profile={"id": profile.profile_id, "persist": True}) as session:
    agent = client.Agent(session=session, vault=vault, max_steps=15)
    agent.run(task="Log into app.example.com")

# Later run: reuse the authenticated state
with client.Session(profile={"id": profile.profile_id, "persist": False}) as session:
    agent = client.Agent(session=session, max_steps=10)
    result = agent.run(
        task="Navigate to the billing page and extract the current plan details"
    )

What gets persisted:

Security:

Use cases:

Docs at docs.notte.cc/concepts/sessions.