All pages

Org agenda

The agenda gathers what's scheduled, due and still to do in your Org files into one week, so you can see what's next without opening each file.

Opening the agenda

SPC o a a (or M-x org-agenda-list) opens the agenda on this week, with the cursor on today.

  • Overdue, at the top, lists undone tasks scheduled or due before today. Sched. 3x means it was scheduled 3 days ago; 2 d. ago means its deadline was 2 days ago.
  • Each day lists what falls on it: scheduled tasks, deadlines and appointments. A repeating task shows on every day it falls on.
  • Later lists undone tasks dated after this week, each with its date.
  • To do, at the bottom, lists TODOs with no date.

Done tasks are left out. A file you have open is read from its buffer, so changes you haven't saved yet show too.

Reading a line

Each task is one line, and its parts line up down the agenda:

    14:00   Sched.    TODO  [#A] Review the pull request    :work:  imp

From the left: a ▸ if it's marked (see Acting on several tasks), its time, what the date is, its TODO keyword, its priority and title, its tags, and its category (see Org). A habit has its graph after its title (see Habits). A long title is cut short with … so the rest stays in place. In a window under 60 columns wide, tags are left out.

In the window client, the agenda's title and the day headers are drawn larger, at the sizes org-heading-heights gives Org's headings.

Moving around

Key What it does
gj / gk Next or previous task (also C-j / C-k)
gH / gM / gL Top, middle or bottom of the window
f / b Next or previous week (also ]] / [[)
. Back to today
gd Go to a date, picked from the calendar
<ret> Go to the task
<tab> Show the task in another window, staying in the agenda
F Follow mode: show each task the cursor moves to
gr Read the files again
gR Read the files again, in every agenda buffer
q / ZZ Leave the agenda
ZQ Leave the agenda and close the files it opened (not ones with unsaved changes)

Changing tasks from the agenda

Change a task right from its line, without opening its file.

Key What it does
t Cycle its TODO keyword, as <ret> does on its heading
SPC m t Pick its TODO keyword, or none
SPC m d s Schedule it, picking the date from the calendar
SPC m d d Give it a deadline, from the calendar
H / L Move the date on the line a day earlier or later; 3L is three days
+ / - Raise or lower its priority; a task without one counts as B
SPC m p Set its priority: a, b or c, or space to remove it
ct or SPC m q Add or remove tags, as C-c C-q does in its file
ce Set its effort, such as 0:45
SPC m r Refile it under another heading, as C-c C-w does
da Archive it, after asking
dA Archive it without asking
dd Delete it and everything under it, after asking
C Capture a new task for the day the cursor is on
u Undo the last change made from the agenda

H and L move the date that line shows: its scheduled date, its deadline, or an appointment, keeping its time and repeater.

The change is made in the task's file. If the file isn't open, it's opened out of sight and saved. If it's open with changes you haven't saved, the change joins them and nothing is saved. The agenda redraws to show it; a task that's now done leaves the agenda. u can't undo refiling or archiving into another file.

Filtering

Narrow the agenda to what you're working on. Filters add up, show at the right of the title as Filter: +work -home, and stay while you move, refresh and change the view.

Key Keeps
st Tasks with a tag, picked from your tags; type -tag to leave a tag's tasks out
sc Tasks in the category of the task under the cursor
se Tasks whose effort fits, such as <1:00 or >=0:30
sr Tasks whose title matches a regexp, ignoring case
s^ Tasks under the same top-level heading as the task under the cursor
S Everything again: removes every filter

A task with no effort is left out by se, except with <>. A section the filters leave empty is left out; the days always show. Opening another view starts without filters.

Acting on several tasks

Mark tasks, then act on all of them at once. A marked task has a ▸ at the left of its line, and its title is highlighted.

Key What it does
m Mark the task under the cursor, or unmark it, and move down
* Mark every task the agenda shows
% Mark the tasks whose title matches a regexp
~ Flip the marks: marked tasks are unmarked, the rest marked
M Unmark everything

Marks stay while you move and refresh; opening another view clears them.

Then press x and pick what to do to every marked task:

Key What it does
t Set their TODO keyword, or none
s Schedule them, on a date from the calendar
d Give them a deadline
+ / - Add a tag, or remove one they have
r Refile them under another heading
$ Archive them
S Move their dates by a number of days, such as 3 or -1
k Delete them and everything under them, after asking

It asks once, acts on each task, then clears the marks. S moves a task's scheduled date and deadline, or its first appointment when it has neither. u undoes the whole action when it changed a single file, but not a refile or an archive.

Clocking from the agenda

Keep track of time on a task from its line, as SPC m c does in its file (see Clocking).

Key What it does
I Clock in on it, clocking out of any other task first
O Clock out
cc Cancel the clock
cg Go to the task you're clocked in on
cr Show or hide the clock report

Days, weeks, months

Press gD to change how much the agenda shows:

Key What it shows
d The day the cursor is on
w Its week
t Its fortnight
m Its month, from the 1st
y Its year, from 1 January
l Turn log mode on or off: what you did each day
R Show or hide the clock report
g Turn the time grid on or off

f and b then move by that much: a month at a time in a month's view. The agenda is back to a week the next time you open it.

Log mode

Press gD l to see what you did on each day, alongside what's planned. Each line is at its time:

Line What it shows
Closed A task marked done, from its CLOSED: note
State A repeating task done, as DONE from TODO
Clocked Time clocked on a task, with how long, as (1:15)

Done tasks show too. Press gD l again to turn it off; it's off again the next time you open the agenda.

The clock report

Press gD R or cr to add a table below the agenda of the time you clocked in the days it shows. It gives each file's time, and each heading's under it, two levels deep. A heading's time includes the time of the headings under it.

Clock report
────────────
File      Heading    Time
─────────────────────────
work.org  File time  1:55
          Project    1:55
            Draft    1:25
─────────────────────────
Total                1:55

A clock counts on the day it started. It's off again the next time you open the agenda.

Times and appointments

A time in a task's date, such as <2026-10-25 Sun 14:00> or <2026-10-25 Sun 9:30-10:00>, puts it at that time of day. Timed tasks come first in their day, by time; the rest follow by priority.

Any other active date in a heading or its text is an appointment, shown on its day:

* Dentist <2026-10-24 Sat 10:00>
* Conference
<2026-11-02 Mon>--<2026-11-04 Wed>

A date range shows on each of its days, as (2/3) on the second.

Habits

A habit is a task you mean to do regularly. Give it a repeating scheduled date and a STYLE property of habit:

* TODO Exercise
SCHEDULED: <2026-10-21 Wed .+2d>
:PROPERTIES:
:STYLE:    habit
:END:

A habit shows on today only, once it's due, never under Overdue or Later. After its title is a graph of the last three weeks and the week to come, a cell a day:

    Sched.   TODO  Exercise          *      * * !

A * is a day you did it, ! is today. The colors say how you were doing on each day, as in Org: blue before it was due, green while it could be done, yellow on its last day, red once it was overdue. Days to come, and past days you didn't do it, are drawn lighter.

A repeater can give the longest you may wait after a slash: .+2d/4d is due two days after you last did it, and overdue after four. The days you did it come from the state changes logged when you marked it done, and its LAST_REPEAT property (see Org).

Diary dates

A date can be one of Emacs's diary forms, for things that come round in a pattern a repeater can't give. The agenda reads five of them, written in a timestamp:

* Ana is %d <%%(diary-anniversary 10 22 1990)>
* Thanksgiving <%%(diary-float 11 4 4)>
* Book club <%%(diary-float t 3 3) 19:00>
* Trip <%%(diary-block 10 19 2026 10 23 2026)>
* Bins out <%%(diary-cyclic 14 10 10 2026)>
* Payday <%%(diary-date t 25 t)>
Form Falls on
diary-anniversary 10 22 1990 22 October every year after 1990; %d in the title becomes the number of years, %s its ending, as 36th for %d%s
diary-float 11 4 4 The 4th Thursday of November (days count from 0, Sunday); t for every month, and -1 for the last
diary-block 10 19 2026 10 23 2026 Each day from the first date to the second
diary-cyclic 14 10 10 2026 Every 14 days from that date
diary-date t 25 t Every day that matches, t matching any month, day or year

A time after the form, as 19:00, puts it at that time. Dates are month, day, year, as in Emacs; set calendar-date-style to 'european for day, month, year, or 'iso for year, month, day. The agenda doesn't run Lisp, so any other form is skipped, and the agenda's last line says how many were. H and L can't move a diary date.

The time grid

Today, and any other day with something timed, has a time grid: a dim line every two hours from 08:00 to 20:00, among the timed tasks. On today, a now line marks the time the agenda was drawn; gr moves it on.

(set-option! 'org-agenda-use-time-grid #f)          ; no grid
(set-option! 'org-agenda-time-grid '(900 1200 1700)) ; other times

Deadlines coming up

Deadlines in the next 14 days also show on today, as In 3 d.. A deadline can give its own warning period in its timestamp:

DEADLINE: <2026-10-30 Fri -3d>

That one shows on today only from three days before.

Tags

A task's tags are its own, those of the headings it's under, and the file's #+FILETAGS::

#+FILETAGS: :home:
* Garden :outside:
** TODO Plant the bulbs :autumn:

Plant the bulbs shows as :autumn:outside:home:.

Lists of TODOs

SPC o a t (or M-x org-todo-list) lists every undone TODO in your agenda files, dated or not, by priority and then in the order they're written. The same keys work on it as in the agenda, so you can change a task from the list.

Matching tags and properties

SPC o a m (or M-x org-tags-view) asks for a match and lists every heading it fits, done ones too:

Match Finds headings
work tagged work, or under a heading or file that is
+work-urgent tagged work but not urgent
work|home tagged either
{^pro} with a tag matching a regexp
TODO="NEXT" with the keyword NEXT
PRIORITY="A" with priority A
LEVEL>1 below the top level
CATEGORY="work" in the category work
+work+Effort<"1:00" tagged work, with an Effort property under 1:00

Compare properties with =, <>, <, >, <= or >=, against a number, a "string" or a {regexp}. A heading without the property matches only <>.

Searching

SPC o a s (or M-x org-search-view) asks for words and lists every entry whose heading or text holds them all, ignoring case:

Search Finds entries
bank loan with both words
bank -holiday with bank but not holiday
"the bank later" with that phrase
{bulbs?} matching a regexp

The dispatcher

SPC o A (or M-x org-agenda, or :OrgAgenda) shows a menu of views, as Org's agenda dispatcher does:

Key View
a The agenda for the week
t Every undone TODO
T The TODOs with one keyword, asked for
m Headings matching tags and properties
M The same, undone TODOs only
s A search
n The week's agenda and every TODO, one after the other
< Limit the next view to the file you're in; press it again for the heading the cursor is under and everything below it

A limited view says so in its title, and keeps the limit when you press gr.

Your own views

Add a view to the dispatcher in init.scm with define-agenda-command!: a key, a name, and the parts it shows, one after another.

(define-agenda-command! "w" "Work day"
  '((agenda (span 1))
    (tags-todo "+work" (header "Work to do"))
    (search "meeting")))
Part Shows
(agenda) The agenda's days; (span 1) for one day
(todo) or (todo "NEXT") Every undone TODO, or one keyword's
(tags "+work") Headings matching a tags match
(tags-todo "+work") The same, undone TODOs only
(search "words") A search

Each part can have a (header "Name"). With more than one part, each is shown under its name. f and b move the agenda part by its span.

Choosing the files

Set the files to read in init.scm. Relative names are looked up in org-directory. With none set, the agenda reads every .org file in org-directory.

(set-option! 'org-agenda-files '("inbox.org" "work.org"))

Options

Option Default What it does
org-agenda-files '() The files the agenda reads; empty means every .org file in org-directory
org-directory "~/org" Where your Org files live
org-agenda-span 7 How many days the agenda shows
org-agenda-start-on-weekday calendar-week-start The day a week starts on, 0 (Sunday) to 6; #f starts on today. Spans other than a week or fortnight start on today
org-deadline-warning-days 14 How many days ahead deadlines show on today
org-agenda-use-time-grid #t Draw the time grid
org-agenda-time-grid '(800 1000 1200 1400 1600 1800 2000) The grid's times, 800 being 08:00
calendar-week-start 0 The day weeks start on: 0 is Sunday
org-habit-preceding-days 21 How many days before today a habit's graph shows
org-habit-following-days 7 How many days from today on a habit's graph shows
calendar-date-style 'american The order of a diary form's dates: 'american (month day year), 'european (day month year) or 'iso