NousResearch/hermes-agent · error · ValueError

notepad full: job '{job_id}' would exceed {MAX_JOB_TOTAL_BYT

Error message

notepad full: job '{job_id}' would exceed {MAX_JOB_TOTAL_BYTES} bytes total; delete unused keys first

What it means

Error "notepad full: job '{job_id}' would exceed {MAX_JOB_TOTAL_BYTES} bytes total; delete unused keys first" thrown in NousResearch/hermes-agent.

Source

Thrown at cron/notepad.py:109

        )


def set_note(job_id: str, key: str, value: str) -> Dict[str, Any]:
    """Upsert one key. Raises ValueError when a size cap would be exceeded."""
    job_id, key, value = str(job_id), str(key), str(value)
    _validate(job_id, key, value)
    now = _hermes_now().isoformat()
    with _transaction() as conn:
        row = conn.execute(
            """SELECT COALESCE(SUM(LENGTH(CAST(key AS BLOB))
                 + LENGTH(CAST(value AS BLOB))), 0)
               FROM cron_notepad WHERE job_id=? AND key<>?""",
            (job_id, key),
        ).fetchone()
        other_bytes = int(row[0])
        entry_bytes = len(key.encode("utf-8")) + len(value.encode("utf-8"))
        if other_bytes + entry_bytes > MAX_JOB_TOTAL_BYTES:
            raise ValueError(
                f"notepad full: job '{job_id}' would exceed "
                f"{MAX_JOB_TOTAL_BYTES} bytes total; delete unused keys first"
            )
        conn.execute(
            """INSERT INTO cron_notepad (job_id, key, value, updated_at)
               VALUES (?, ?, ?, ?)
               ON CONFLICT(job_id, key)
               DO UPDATE SET value=excluded.value, updated_at=excluded.updated_at""",
            (job_id, key, value, now),
        )
    return {"job_id": job_id, "key": key, "value": value, "updated_at": now}


def get_note(job_id: str, key: str) -> Optional[str]:
    with _transaction() as conn:
        row = conn.execute(
            "SELECT value FROM cron_notepad WHERE job_id=? AND key=?",
            (str(job_id), str(key)),

View on GitHub (pinned to c896c09c42)

Solutions

  1. Delete unused notepad keys for this job, then retry.
  2. Split data across fewer/smaller entries to stay under the total cap.

When it happens

Trigger: Thrown at cron/notepad.py:109 when the library encounters an invalid state.

Common situations: See trigger scenarios.


AI-assisted analysis of NousResearch/hermes-agent@c896c09c42 (2026-08-14). Data as JSON: /api/errors/5b2a26dfe6a0b1d7. Report an issue: GitHub.