← Blog

Guides

How to Create an AI Agent With Its Own Goals, Memory and Tool Access

A practical walkthrough of creating an AI agent in Damon — naming it, giving it a personality and goals, choosing which tools it can touch, and deciding what it may do without asking you.

By Marlon Wiprud

An AI agent is different from a chat window. A chat answers what you type. An agent has a standing identity, remembers what it has done, can reach into your tools, and can be put on a schedule so it works when you aren't watching. This guide walks through creating one in Damon, from a blank workspace to an agent doing a real job.

The whole thing takes about ten minutes. You don't write any code.

What an agent is made of

In Damon, an agent is a named configuration with five parts:

  • A name and a handle. "Sales Rep" with the handle @sales-rep. The handle is how you address it in chat and how workflows refer to it.
  • A personality. How it communicates: terse or thorough, formal or casual, whether it pushes back. Written as directives, not descriptions.
  • Goals. What it optimizes for. "Keep the pipeline honest: flag deals with no activity in 14 days" gives it a standing purpose across every conversation and run.
  • Integration access. An explicit allowlist of the tools it may use. No grant means no access. Your inbox agent doesn't get your CRM unless you say so.
  • Memory. Built up automatically from everything it does and every conversation it has. You don't configure it; it accrues.

What it may do with that access is decided separately, by autonomy policies. More on that below, because it's the part that makes handing work to an agent feel safe.

Step 1: Connect the tools it will need

Before the agent exists, connect the integrations it should be able to use. Go to Integrations, pick the tool, and approve the OAuth prompt. Gmail, Google Calendar, Google Drive, Slack, Linear, ClickUp, Monday, HubSpot, Pipedrive, GitHub and Fireflies connect this way; any MCP server can be added with a URL.

When a tool connects, Damon discovers every action it exposes and sorts each one into a read or write category. A Gmail connection, for example, arrives with actions like search emails, get a thread, create a draft, send, reply, archive and apply a label, each already tagged as reading or changing your mailbox.

Step 2: Create the agent

Every workspace already has a default agent, Damon, that can use any connected tool. A dedicated agent is worth creating when you want a narrower allowlist, a different voice, or standing goals for one job. Open Agents and choose Create. Fill in:

  1. Display name and handle. Handles are unique within a workspace.
  2. Personality. Two or three sentences of instruction. For a triage agent: "Be brief. Lead with what needs a decision. Never send anything on my behalf without showing me the draft first."
  3. Goals. What good looks like. "Keep my inbox at zero unread that require me. Anything that needs a reply gets a draft."
  4. Integrations. Tick the tools it may access.

You can also do this in chat: ask Damon to create an agent and describe it in plain language. It will fill in the same fields and ask you to approve the result. Either way, creating or editing an agent always requires your explicit approval, because integration grants change what the agent is allowed to touch.

Step 3: Decide what it may do without asking

This is where most "AI agent" setups skip a step. Damon uses autonomy policies: a map from capability scopes to a mode. Scopes are things like email.read, email.send, calendar.write, crm.write, message.send. The mode is either auto_approve or require_approval.

The defaults are conservative. Reading is auto-approved; anything that changes state — sending an email, creating a calendar event, writing to the CRM, posting to Slack — pauses for your approval. When the agent hits a gated action it stops and posts an approval card. You approve, and it resumes.

For a new agent, leave the defaults for a week. Then loosen the low-stakes writes you've been approving on autopilot: saving its notes to your drive (file.write), creating tasks in your tracker (task.write). Anything that reaches another person — an email, a Slack message — stays a human click. We proof-read every email that leaves our own accounts, and we'd suggest you do too. Policies layer (step → workflow → workspace default), so you can loosen one job without loosening the agent everywhere.

Step 4: Give it a job

Talk to it. Open a chat as @sales-rep and ask for something real: "Which deals in HubSpot haven't had activity in two weeks? Give me a line on each." It will use the CRM tools you granted, and you'll see the answer with citations back to the records it read.

Then make it recurring. Ask the agent to turn that request into a workflow: "Do this every Monday at 8am and message me the list." Damon builds a three-step workflow — a scheduled trigger, an agent step that gathers and summarizes, and a message step that opens a thread with you — and runs it on the schedule. You can open the workflow in the visual editor to see or change the steps.

The message step matters. Work an agent does in the background isn't visible until a step explicitly reaches you, so every scheduled job that should end with you reading something ends with a message step. Damon's own guidance for workflows says the same thing: an agent step cannot talk to the user; a message step can.

Step 5: Let it learn your preferences

After a few conversations, the agent will offer to save a recurring preference as a skill: a short markdown note in your workspace drive that it reads before similar tasks. "Weekly pipeline summaries go oldest-deal-first and never exceed ten lines" is a skill. You can also write them yourself with the /skill command in chat.

Skills are how the agent gets better at your version of the job without you repeating yourself, and they're plain files you can read and edit.

A complete example

Here is an agent that reviews a sales pipeline every Monday, written out so you can copy the setup.

  • Name: Pipeline Reviewer, @pipeline
  • Personality: "Direct. Numbers first. One line per deal. Suggest a next step only when you have evidence for it."
  • Goals: "Surface deals that have stalled and make sure each has an owner and a next action."
  • Integrations: HubSpot
  • Policy: defaults (reads auto-approved, so this job never needs to ask)
  • Workflow: every Monday 8:00 → agent step: "Find deals with no activity in 14 days. For each: name, amount, owner, days idle, and one suggested next step." → message step: "Open with the count of stalled deals, then the list, then offer to draft a follow-up for any of them."

The list is waiting in a Damon thread on Monday morning. Ask about any deal in the same thread, and if you want a follow-up drafted, that draft is the first write the agent asks you to approve.

Common questions

Do I need to write code?

No. Agents are configured in the app or by describing them in chat. Workflows are built visually or by asking the agent to build them.

Can one agent use several tools at once?

Yes. Grant it the integrations it needs and it will combine them — read a thread in Gmail, check the calendar, and draft a reply that references both.

How is this different from a custom GPT or a Claude project?

Those give a model a persona and some files. A Damon agent additionally has live access to your tools with per-action approval, runs on a schedule without you present, keeps memory across every run, and can be composed into multi-step workflows with branching. The model underneath is one of Anthropic's, OpenAI's or Google's; you pick.

What happens when it makes a mistake?

Anything that changes state is gated by default, so mistakes show up as a draft or an approval card, not as a sent email. Every action it takes is logged in the run's execution view, step by step.