# Eggent 0.8.0 - Agent Email and Google Date: 2026-10-28 Type: Minor release snapshot ## Release Name `Agent Email and Google` The agent gets an email of its own and works in Google Docs, Sheets, Slides and Drive. You can say something to it while it works instead of stopping it. A new password ends every older session, scheduled checks with nothing new stay quiet, and a hole in the sign-in check is closed. ## What Is Included ### 1) Saying something to a working turn - The composer sends while a turn runs: the message is put in front of the model after the current step, and the answer goes on from there. Several quick messages are read together. A message the turn did not get to read stays under the answer with a button to send it. - `POST /api/chat//steer` does the same for other clients; Telegram already worked this way. ### 2) The agent's email - A tool of its own, `eggent_email`: `send_email`, `list_emails`, `read_email`, `email_status`, `my_address`. A letter to the person goes at once; a letter to anybody else waits for the person's yes. - On your own server it sends through your mail server: `EGGENT_SMTP_URL` (`smtp://` or `smtps://`, the login inside it), `EGGENT_EMAIL_FROM` and `EGGENT_EMAIL_OWNER` (the person's own address). A letter to anybody but the person waits for a yes in the chat. Nothing is received in this mode. - A deployment can offer a mailbox through a service of its own (`EGGENT_EMAIL_API_URL`): then letters also arrive, are kept in folders, and the service decides where a letter may go. Letters that arrive are given to the model as information, never as instructions. - A question about mail is answered from a fresh look at the mailbox, never from an earlier result in the chat. ### 3) Google, and calendar files for everyone - `eggent_calendar_file` makes a calendar file (`.ics`) for an event - an instant, a wall-clock time in a time zone (repeating events carry the zone's changes) or a floating time - which opens in any calendar. `.ics` files are served as `text/calendar`. - Where a deployment offers Google through a service of its own (`EGGENT_GOOGLE_API_URL`), `eggent_google` works with documents, sheets and presentations, Drive files and folders, and opens a file by link; a card under an answer and in **Settings -> General** connects the account, and the person's own Drive files can be picked. The core holds no Google address. ### 4) Sign-in - **A new password ends every older session.** `auth.sessionsValidAfter` in the settings names the moment; a session issued before it is refused everywhere a session is checked, and a sign-in link minted before it is too. Changing the login or password in Settings sets it and keeps the browser that made the change signed in. The login can be an email address. - Settings are written whole, under a lock, so a save begun before a password change cannot write the old password back. `PUT /api/settings` no longer takes `auth`. - **Security**: a path whose last segment carried a dot (`/api/projects/x.json`) skipped the sign-in check. Only a dotted name at the top of the site does now (`/icon.svg`, `/robots.txt`). - With `EGGENT_PASSWORD_RESET_URL` set, the sign-in page shows **Forgot your password?**. ### 5) Schedules - **Quiet runs**: a run whose whole reply is `NO_UPDATE` sends nothing to Telegram and leaves one line in its chat, so a check every half hour does not report "nothing new" every half hour. - A request to watch something keeps the terminal, so the agent can write and test the script a schedule then runs. - A deployment's usage provider may set how many recurring tasks a workspace keeps and how often they run; without one there is no limit. ### 6) Smaller things - A bundled skill can name the environment it needs (`requires_env`) and is offered only where it is set. - A chat that runs on the other side of a pair no longer shows this side's model under the composer. ## Upgrade Notes - Migration: none. Sessions issued before the first password change after the update stay valid until that change. - Docker: pull `ghcr.io/eggent-ai/eggent:0.8.0` (or `latest`) and recreate the container. From source: `npm install`, then rebuild.