@aitne-sh/aitne 0.1.8 → 0.1.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +251 -164
- package/agent-assets/agent-profiles/_safety.md +3 -3
- package/agent-assets/agent-profiles/browser-task.md +108 -0
- package/agent-assets/agent-profiles/conversational.md +3 -3
- package/agent-assets/agent-profiles/profile-importer.md +2 -2
- package/agent-assets/agent-profiles/routine-fetch-window.md +30 -19
- package/agent-assets/agents/context-index-reconcile/agent.md +52 -0
- package/agent-assets/agents/evening-review/agent.md +53 -0
- package/agent-assets/agents/hourly-check/agent.md +62 -0
- package/agent-assets/agents/monthly-review/agent.md +55 -0
- package/agent-assets/agents/morning-routine/agent.md +78 -0
- package/agent-assets/agents/roadmap-maintenance/agent.md +52 -0
- package/agent-assets/agents/skill-curation/agent.md +52 -0
- package/agent-assets/agents/user-profile-sweep-evening/agent.md +48 -0
- package/agent-assets/agents/user-profile-sweep-morning/agent.md +53 -0
- package/agent-assets/agents/weekly-review/agent.md +51 -0
- package/agent-assets/docs/concepts/agent-day.md +13 -11
- package/agent-assets/docs/concepts/auth-health.md +47 -10
- package/agent-assets/docs/concepts/backends-and-tiers.md +66 -31
- package/agent-assets/docs/concepts/costs-and-quotas.md +51 -15
- package/agent-assets/docs/concepts/delegated-mode.md +56 -17
- package/agent-assets/docs/concepts/memory-model.md +77 -34
- package/agent-assets/docs/concepts/observations.md +49 -11
- package/agent-assets/docs/concepts/process-keys.md +56 -22
- package/agent-assets/docs/concepts/routines.md +60 -33
- package/agent-assets/docs/concepts/safety-and-execution.md +50 -21
- package/agent-assets/docs/concepts/safety-model.md +61 -50
- package/agent-assets/docs/concepts/skills.md +34 -18
- package/agent-assets/docs/features/integrations/browser-history.md +196 -0
- package/agent-assets/docs/features/integrations/calendar.md +39 -29
- package/agent-assets/docs/features/integrations/git.md +18 -7
- package/agent-assets/docs/features/integrations/github.md +84 -33
- package/agent-assets/docs/features/integrations/mail.md +61 -17
- package/agent-assets/docs/features/integrations/notion.md +18 -6
- package/agent-assets/docs/features/integrations/obsidian.md +28 -5
- package/agent-assets/docs/features/lifestyle/git.md +44 -40
- package/agent-assets/docs/features/lifestyle/reading.md +57 -22
- package/agent-assets/docs/features/lifestyle/receipts.md +51 -21
- package/agent-assets/docs/features/lifestyle/travel-bookings.md +77 -14
- package/agent-assets/docs/features/memory-files/agent-journal.md +132 -53
- package/agent-assets/docs/features/memory-files/agent-lessons.md +177 -0
- package/agent-assets/docs/features/memory-files/projects.md +73 -17
- package/agent-assets/docs/features/memory-files/roadmap.md +54 -11
- package/agent-assets/docs/features/memory-files/schedule.md +113 -70
- package/agent-assets/docs/features/memory-files/today.md +46 -21
- package/agent-assets/docs/features/memory-files/user-profile.md +63 -33
- package/agent-assets/docs/features/messaging/bang-commands.md +113 -36
- package/agent-assets/docs/features/messaging/dashboard-chat.md +43 -21
- package/agent-assets/docs/features/messaging/discord.md +35 -4
- package/agent-assets/docs/features/messaging/overview.md +37 -19
- package/agent-assets/docs/features/messaging/pairing-and-magic-phrase.md +94 -27
- package/agent-assets/docs/features/messaging/slack.md +67 -14
- package/agent-assets/docs/features/messaging/telegram.md +22 -8
- package/agent-assets/docs/features/messaging/whatsapp.md +71 -17
- package/agent-assets/docs/features/operations/activity-and-conversations.md +45 -15
- package/agent-assets/docs/features/operations/approvals.md +49 -16
- package/agent-assets/docs/features/operations/backend-routing.md +68 -16
- package/agent-assets/docs/features/operations/cost-tracking.md +84 -17
- package/agent-assets/docs/features/operations/managed-chromium.md +222 -0
- package/agent-assets/docs/features/operations/notifications.md +52 -11
- package/agent-assets/docs/features/operations/quiet-hours.md +64 -40
- package/agent-assets/docs/features/operations/schedule-approaching.md +54 -24
- package/agent-assets/docs/features/routines/custom-routines.md +98 -26
- package/agent-assets/docs/features/routines/evening-review.md +82 -21
- package/agent-assets/docs/features/routines/hourly-check.md +149 -29
- package/agent-assets/docs/features/routines/morning-routine.md +54 -35
- package/agent-assets/docs/features/routines/weekly-review.md +46 -21
- package/agent-assets/docs/features/wiki/commands.md +26 -16
- package/agent-assets/docs/features/wiki/cost-and-approval.md +241 -0
- package/agent-assets/docs/features/wiki/dashboard.md +256 -0
- package/agent-assets/docs/features/wiki/overview.md +70 -12
- package/agent-assets/docs/features/wiki/search.md +248 -0
- package/agent-assets/docs/features/wiki/workspaces.md +254 -0
- package/agent-assets/docs/getting-started/01-what-is-this.md +34 -23
- package/agent-assets/docs/getting-started/02-first-steps.md +17 -10
- package/agent-assets/docs/getting-started/03-what-can-this-do.md +25 -14
- package/agent-assets/docs/getting-started/04-first-day.md +39 -21
- package/agent-assets/docs/glossary.md +235 -24
- package/agent-assets/docs/guides/add-a-custom-routine.md +63 -23
- package/agent-assets/docs/guides/backup-and-restore.md +80 -16
- package/agent-assets/docs/guides/budget-and-cost-for-wiki.md +57 -26
- package/agent-assets/docs/guides/build-your-wiki.md +22 -9
- package/agent-assets/docs/guides/change-which-model-handles-x.md +64 -10
- package/agent-assets/docs/guides/connect-a-new-mail-account.md +66 -15
- package/agent-assets/docs/guides/explore-with-trace-and-connect.md +32 -14
- package/agent-assets/docs/guides/import-knowledge-file.md +50 -40
- package/agent-assets/docs/guides/install-and-run.md +49 -20
- package/agent-assets/docs/guides/maintain-wiki-health.md +35 -10
- package/agent-assets/docs/guides/migrate-machines.md +74 -18
- package/agent-assets/docs/guides/multiple-wikis-for-multiple-domains.md +111 -60
- package/agent-assets/docs/guides/pause-the-agent.md +69 -24
- package/agent-assets/docs/guides/reinstall-cleanly.md +88 -18
- package/agent-assets/docs/guides/setup-wizard.md +116 -54
- package/agent-assets/docs/guides/switch-default-backend.md +62 -16
- package/agent-assets/docs/guides/use-an-existing-obsidian-vault.md +30 -14
- package/agent-assets/docs/reference/api.md +153 -32
- package/agent-assets/docs/reference/cli-commands.md +39 -18
- package/agent-assets/docs/reference/config.md +241 -49
- package/agent-assets/docs/reference/disallowed-tools.md +34 -13
- package/agent-assets/docs/reference/keyboard-shortcuts.md +34 -10
- package/agent-assets/docs/reference/knowledge-layout.md +629 -0
- package/agent-assets/docs/reference/process-keys.md +62 -6
- package/agent-assets/docs/reference/skills.md +41 -14
- package/agent-assets/docs/troubleshooting/auth-failed.md +51 -21
- package/agent-assets/docs/troubleshooting/dashboard-shows-degraded.md +97 -28
- package/agent-assets/docs/troubleshooting/fallback-keeps-firing.md +86 -22
- package/agent-assets/docs/troubleshooting/messaging-not-pairing.md +68 -24
- package/agent-assets/docs/troubleshooting/morning-routine-didnt-run.md +80 -20
- package/agent-assets/docs/troubleshooting/observation-not-detected.md +73 -21
- package/agent-assets/docs/troubleshooting/quota-exhausted.md +33 -8
- package/agent-assets/docs/troubleshooting/wiki-ingest-full-blocked.md +126 -54
- package/agent-assets/docs/troubleshooting/wiki-write-failed.md +29 -12
- package/agent-assets/optimizer-skills/drift-analysis/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/knowledge-map/SKILL.md +1 -1
- package/agent-assets/optimizer-skills/skill-curation/SKILL.md +1 -1
- package/agent-assets/sandbox/linux/aitne-chromium.apparmor +91 -0
- package/agent-assets/sandbox/macos/aitne-chromium.sb +156 -0
- package/agent-assets/skills/agent-actions/SKILL.md +25 -41
- package/agent-assets/skills/agent-create/SKILL.md +158 -0
- package/agent-assets/skills/attach/SKILL.md +10 -29
- package/agent-assets/skills/browser-history/SKILL.md +211 -0
- package/agent-assets/skills/browser-history-respond/SKILL.md +111 -0
- package/agent-assets/skills/browser-task/SKILL.md +164 -0
- package/agent-assets/skills/context/SKILL.md +35 -44
- package/agent-assets/skills/context/curation.json +14 -14
- package/agent-assets/skills/context/references/api.md +52 -40
- package/agent-assets/skills/context/references/required-frontmatter.md +13 -12
- package/agent-assets/skills/context/references/snapshot-files.md +18 -17
- package/agent-assets/skills/context/seeds/file-responsibilities.seed.json +8 -8
- package/agent-assets/skills/context/seeds/frontmatter-requirements.seed.json +3 -3
- package/agent-assets/skills/docs-search/SKILL.md +23 -34
- package/agent-assets/skills/external-services/SKILL.delegated.claude.md +17 -114
- package/agent-assets/skills/external-services/SKILL.delegated.codex.md +17 -113
- package/agent-assets/skills/external-services/SKILL.delegated.gemini.md +17 -113
- package/agent-assets/skills/external-services/SKILL.md +3 -3
- package/agent-assets/skills/external-services/SKILL.native.claude.md +7 -7
- package/agent-assets/skills/external-services/SKILL.native.codex.md +7 -7
- package/agent-assets/skills/external-services/SKILL.native.gemini.md +4 -4
- package/agent-assets/skills/external-services/references/calendar-apple.md +2 -2
- package/agent-assets/skills/external-services/references/calendar-outlook.md +1 -1
- package/agent-assets/skills/external-services/references/exec-errors.md +32 -0
- package/agent-assets/skills/external-services/references/obsidian.md +2 -2
- package/agent-assets/skills/external-services/references/skills-crud.md +5 -5
- package/agent-assets/skills/gmail-lifestyle/SKILL.md +11 -83
- package/agent-assets/skills/gmail-lifestyle/references/receipts-api.md +4 -0
- package/agent-assets/skills/gmail-lifestyle/references/travel-bookings-api.md +9 -0
- package/agent-assets/skills/mail/SKILL.delegated.claude.md +15 -18
- package/agent-assets/skills/mail/SKILL.delegated.codex.md +11 -6
- package/agent-assets/skills/mail/SKILL.delegated.gemini.md +11 -6
- package/agent-assets/skills/mail/SKILL.md +10 -18
- package/agent-assets/skills/mail/SKILL.native.claude.md +8 -7
- package/agent-assets/skills/mail/SKILL.native.codex.md +1 -1
- package/agent-assets/skills/mail/SKILL.native.gemini.md +1 -1
- package/agent-assets/skills/mail/references/api.md +10 -3
- package/agent-assets/skills/mail/references/examples.md +2 -1
- package/agent-assets/skills/mail/references/providers.md +1 -1
- package/agent-assets/skills/managed-tasks/SKILL.md +48 -81
- package/agent-assets/skills/managed-tasks/references/errors.md +33 -19
- package/agent-assets/skills/managed-tasks/references/output-path.md +33 -17
- package/agent-assets/skills/managed-tasks/references/recurrence-rule.md +7 -5
- package/agent-assets/skills/management-policy/SKILL.md +42 -42
- package/agent-assets/skills/management-policy/curation.json +1 -1
- package/agent-assets/skills/management-policy/references/policy-workflow.md +11 -12
- package/agent-assets/skills/management-policy/seeds/policy-file-shape.seed.json +1 -1
- package/agent-assets/skills/notify/SKILL.md +14 -16
- package/agent-assets/skills/notify/references/priority.md +28 -20
- package/agent-assets/skills/notion/SKILL.delegated.claude.md +2 -2
- package/agent-assets/skills/notion/SKILL.delegated.codex.md +2 -2
- package/agent-assets/skills/notion/SKILL.delegated.gemini.md +2 -2
- package/agent-assets/skills/notion/SKILL.md +17 -17
- package/agent-assets/skills/notion/SKILL.native.claude.md +11 -7
- package/agent-assets/skills/notion/SKILL.native.codex.md +10 -5
- package/agent-assets/skills/notion/SKILL.native.gemini.md +10 -5
- package/agent-assets/skills/observations/SKILL.md +29 -28
- package/agent-assets/skills/observations/references/fetch-fallback.md +22 -0
- package/agent-assets/skills/project-doc/SKILL.md +10 -7
- package/agent-assets/skills/project-doc/curation.json +3 -3
- package/agent-assets/skills/project-doc/seeds/project-shape.seed.json +8 -5
- package/agent-assets/skills/project-doc/seeds/slug-grammar.seed.json +5 -5
- package/agent-assets/skills/reading/SKILL.md +18 -42
- package/agent-assets/skills/reading/references/reading-taste.md +7 -7
- package/agent-assets/skills/roadmap/SKILL.md +8 -24
- package/agent-assets/skills/roadmap/curation.json +1 -1
- package/agent-assets/skills/roadmap/references/api.md +21 -11
- package/agent-assets/skills/roadmap/references/cross-check.md +15 -8
- package/agent-assets/skills/roadmap/references/horizon-tags.md +11 -0
- package/agent-assets/skills/roadmap/references/migration.md +12 -10
- package/agent-assets/skills/roadmap/references/retention.md +18 -0
- package/agent-assets/skills/roadmap/seeds/entry-types.seed.json +1 -1
- package/agent-assets/skills/schedule/SKILL.md +41 -50
- package/agent-assets/skills/schedule/references/batch.md +2 -2
- package/agent-assets/skills/schedule/references/errors.md +7 -4
- package/agent-assets/skills/schedule/references/importance.md +23 -0
- package/agent-assets/skills/schedule/references/model-selection.md +3 -3
- package/agent-assets/skills/schedule/references/recurrence-rule.md +7 -5
- package/agent-assets/skills/scheduled-managed-task/SKILL.md +77 -70
- package/agent-assets/skills/today/SKILL.md +24 -83
- package/agent-assets/skills/today/curation.json +3 -3
- package/agent-assets/skills/today/references/agent-plan-lifecycle.md +6 -5
- package/agent-assets/skills/today/references/today-skeleton.md +66 -0
- package/agent-assets/skills/today/seeds/agent-notes-flavors.seed.json +1 -1
- package/agent-assets/skills/today/seeds/section-shape.seed.json +7 -7
- package/agent-assets/skills/user-interview/SKILL.md +21 -93
- package/agent-assets/skills/user-interview/references/op-briefing.md +3 -3
- package/agent-assets/skills/user-interview/references/op-dm-handler.md +88 -0
- package/agent-assets/skills/user-interview/references/op-morning.md +1 -1
- package/agent-assets/skills/user-interview/references/sweep-and-fallback.md +9 -1
- package/agent-assets/skills/user-profile/SKILL.md +29 -39
- package/agent-assets/skills/user-profile/curation.json +4 -4
- package/agent-assets/skills/user-profile/references/character-preferences.md +3 -3
- package/agent-assets/skills/user-profile/seeds/routing-table.seed.json +8 -8
- package/agent-assets/skills/user-profile/seeds/topic-files.seed.json +6 -6
- package/agent-assets/skills/wiki/wiki-ask/SKILL.md +1 -1
- package/agent-assets/skills/wiki/wiki-compile/SKILL.md +9 -8
- package/agent-assets/skills/wiki/wiki-connect/SKILL.md +32 -5
- package/agent-assets/skills/wiki/wiki-ingest/SKILL.md +6 -50
- package/agent-assets/skills/wiki/wiki-ingest/references/curl-errors.md +58 -0
- package/agent-assets/skills/wiki/wiki-lint/SKILL.md +20 -14
- package/agent-assets/skills/wiki/wiki-trace/SKILL.md +10 -5
- package/agent-assets/skills/wiki/wiki-vault-rules/SKILL.md +2 -0
- package/agent-assets/system-prompts/routine-fetch-window.md +22 -12
- package/agent-assets/task-flows/_partials/calendar-acquire.google_calendar.md +4 -2
- package/agent-assets/task-flows/_partials/calendar-acquire.outlook_calendar.md +4 -2
- package/agent-assets/task-flows/_partials/capture-user-info.md +2 -2
- package/agent-assets/task-flows/_partials/dm-intent.long-horizon.md +1 -1
- package/agent-assets/task-flows/_partials/dm-intent.project.md +9 -9
- package/agent-assets/task-flows/_partials/feedback-capture.md +30 -0
- package/agent-assets/task-flows/_partials/mail-acquire.outlook_mail.md +3 -2
- package/agent-assets/task-flows/_partials/notion-acquire.notion.md +10 -5
- package/agent-assets/task-flows/browser_task.md +84 -0
- package/agent-assets/task-flows/github.assigned.md +1 -1
- package/agent-assets/task-flows/github.pull_request.review_requested.md +2 -2
- package/agent-assets/task-flows/github.workflow_run.failed.md +2 -2
- package/agent-assets/task-flows/knowledge.import.md +14 -14
- package/agent-assets/task-flows/message.received.dm.md +13 -4
- package/agent-assets/task-flows/message.received.dm_first.md +7 -3
- package/agent-assets/task-flows/routine.custom.md +3 -3
- package/agent-assets/task-flows/routine.evening_review.md +88 -8
- package/agent-assets/task-flows/routine.fetch_window.md +2 -2
- package/agent-assets/task-flows/routine.hourly_check.md +16 -12
- package/agent-assets/task-flows/routine.monthly_review.md +93 -21
- package/agent-assets/task-flows/routine.morning_routine_journal.md +119 -97
- package/agent-assets/task-flows/routine.morning_routine_today.md +43 -43
- package/agent-assets/task-flows/routine.research_cluster_update.md +35 -0
- package/agent-assets/task-flows/routine.research_dispatch.md +38 -0
- package/agent-assets/task-flows/routine.research_offer_dm.md +125 -0
- package/agent-assets/task-flows/routine.research_wiki_summary.md +53 -0
- package/agent-assets/task-flows/routine.roadmap_refresh.md +10 -10
- package/agent-assets/task-flows/routine.today_refresh.md +4 -4
- package/agent-assets/task-flows/routine.user_profile_sweep.md +10 -10
- package/agent-assets/task-flows/routine.weekly_review.md +114 -24
- package/agent-assets/task-flows/schedule.approaching.md +0 -1
- package/agent-assets/task-flows/scheduled.dm.md +5 -5
- package/agent-assets/task-flows/scheduled.task.md +4 -4
- package/agent-assets/task-flows/setup.initial.md +21 -21
- package/agent-assets/task-flows/setup.update.md +2 -2
- package/agent-assets/task-flows/wiki.trace.md +1 -1
- package/agent-assets/templates/README.md +27 -20
- package/agent-assets/templates/_index.md +42 -26
- package/agent-assets/templates/_manifest.json +34 -99
- package/agent-assets/templates/{user → identity}/_index.md +1 -1
- package/agent-assets/templates/{user → identity}/profile.md +2 -2
- package/agent-assets/templates/{dossiers → knowledge/dossiers}/_index.md +1 -1
- package/agent-assets/templates/{projects → plans/projects}/_active.base +1 -1
- package/agent-assets/templates/policies/_index.md +21 -0
- package/agent-assets/templates/{rules → policies}/journal-export.md +1 -1
- package/agent-assets/templates/{rules → policies}/journal-format.md +5 -5
- package/agent-assets/templates/{rules/policies → policies/management-captures}/_index.md +2 -2
- package/agent-assets/templates/{rules → policies}/management.md +3 -3
- package/agent-assets/templates/{rules → policies}/mcp.md +1 -1
- package/agent-assets/templates/{rules → policies}/redaction.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/_index.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/evening.md +2 -2
- package/agent-assets/templates/{routines → policies/routines}/hourly.md +1 -1
- package/agent-assets/templates/{routines → policies/routines}/monthly.md +2 -2
- package/bin/aitne.mjs +58 -15
- package/package.json +5 -4
- package/scripts/commands/doctor.mjs +25 -10
- package/scripts/commands/run-now.mjs +6 -21
- package/scripts/lib/ports.d.mts +27 -0
- package/scripts/lib/ports.mjs +36 -0
- package/scripts/lib/process-identity.d.mts +46 -0
- package/scripts/lib/process-identity.mjs +193 -0
- package/scripts/lib/read-api-token.mjs +176 -0
- package/scripts/start.mjs +16 -5
- package/agent-assets/docs/features/lifestyle/travel-time.md +0 -58
- package/agent-assets/skills/gmail-lifestyle/references/travel-time-api.md +0 -59
- package/agent-assets/skills/schedule/references/recurring.md +0 -185
- package/agent-assets/templates/context-index.md +0 -42
- package/agent-assets/templates/rules/_index.md +0 -19
- /package/agent-assets/templates/{user → identity}/expertise.md +0 -0
- /package/agent-assets/templates/{user → identity}/goals.md +0 -0
- /package/agent-assets/templates/{user → identity}/people.md +0 -0
- /package/agent-assets/templates/{user → identity}/personal.md +0 -0
- /package/agent-assets/templates/{user → identity}/work.md +0 -0
- /package/agent-assets/templates/{agent/journal.md → journal/agent.md} +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/evening.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/hourly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/monthly.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/morning.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/roadmap.md +0 -0
- /package/agent-assets/templates/{dossiers → knowledge/dossiers}/weekly.md +0 -0
- /package/agent-assets/templates/{projects → plans/projects}/_index.md +0 -0
- /package/agent-assets/templates/{roadmap.md → plans/roadmap.md} +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/morning.md +0 -0
- /package/agent-assets/templates/{routines → policies/routines}/weekly.md +0 -0
- /package/agent-assets/templates/{agent → state}/profile-questions.md +0 -0
- /package/agent-assets/templates/{today.md → state/today.md} +0 -0
|
@@ -19,7 +19,8 @@ section: safety
|
|
|
19
19
|
tags:
|
|
20
20
|
- core
|
|
21
21
|
- safety
|
|
22
|
-
-
|
|
22
|
+
- operations
|
|
23
|
+
- backends
|
|
23
24
|
status: stable
|
|
24
25
|
ask_examples:
|
|
25
26
|
- What is the difference between Safe and Allow mode?
|
|
@@ -27,7 +28,7 @@ ask_examples:
|
|
|
27
28
|
- How do I see what tools the agent is allowed to use?
|
|
28
29
|
locale: en-US
|
|
29
30
|
created: 2026-04-25
|
|
30
|
-
updated: 2026-
|
|
31
|
+
updated: 2026-05-28
|
|
31
32
|
keywords:
|
|
32
33
|
- safety
|
|
33
34
|
- safe mode
|
|
@@ -35,18 +36,23 @@ keywords:
|
|
|
35
36
|
- absolute block
|
|
36
37
|
- disallowed tools
|
|
37
38
|
- approval
|
|
39
|
+
- execution mode
|
|
40
|
+
- risk tier
|
|
38
41
|
related:
|
|
42
|
+
- concepts/safety-model
|
|
39
43
|
- concepts/skills
|
|
40
44
|
- features/operations/approvals
|
|
41
45
|
- reference/disallowed-tools
|
|
42
46
|
ui_anchors:
|
|
43
47
|
- /settings/advanced
|
|
48
|
+
- /settings/models
|
|
44
49
|
config_keys:
|
|
45
50
|
- disallowedTools
|
|
46
51
|
- allowedToolsOverride
|
|
47
52
|
- claudeExecutionPermissionMode
|
|
48
53
|
- codexExecutionPermissionMode
|
|
49
54
|
- geminiExecutionPermissionMode
|
|
55
|
+
- opencodeExecutionPermissionMode
|
|
50
56
|
---
|
|
51
57
|
|
|
52
58
|
# Safety and Execution Modes
|
|
@@ -57,10 +63,13 @@ Three layers gate what the agent can do:
|
|
|
57
63
|
|
|
58
64
|
1. **Skill `allowed-tools`** — the visible toolset for that session.
|
|
59
65
|
2. **Execution mode** — Safe (strict permission checks, sandboxes)
|
|
60
|
-
or Allow (SDK bypass, sandbox off).
|
|
61
|
-
3. **Always-disallowed** — a hard floor. Recursive deletes, sudo
|
|
66
|
+
or Allow (SDK bypass, sandbox off). Set per-backend.
|
|
67
|
+
3. **Always-disallowed** — a hard floor. Recursive deletes, `sudo`,
|
|
62
68
|
secret-file reads / writes are denied unconditionally regardless
|
|
63
|
-
of mode.
|
|
69
|
+
of mode, and neither a skill nor Allow mode can widen past it.
|
|
70
|
+
|
|
71
|
+
A fourth idea — the **risk tier** — sits on top of the daemon API and
|
|
72
|
+
decides whether a *write* runs on its own or waits for your approval.
|
|
64
73
|
|
|
65
74
|
## Why This Concept Exists
|
|
66
75
|
|
|
@@ -72,37 +81,57 @@ disallowed-tools floor.
|
|
|
72
81
|
|
|
73
82
|
## Definitions
|
|
74
83
|
|
|
75
|
-
- **Safe mode**: the default. Strict permission checks,
|
|
76
|
-
|
|
84
|
+
- **Safe mode**: the default. Strict permission checks, plus a
|
|
85
|
+
backend-specific enforcement layer — Claude curl/jq hooks, the Codex
|
|
86
|
+
workspace-write sandbox, the Gemini whitelist TOML, and the OpenCode
|
|
87
|
+
permission block.
|
|
77
88
|
- **Allow mode**: the looser posture. SDK bypass, sandbox off, minimal
|
|
78
|
-
TOML. The absolute-block layer still holds
|
|
89
|
+
TOML. The absolute-block layer still holds in Allow mode, so the
|
|
90
|
+
destructive-ops floor never opens. Set independently per backend, so
|
|
91
|
+
one backend can run Allow while the others stay Safe.
|
|
79
92
|
- **Absolute block**: the unconditional layer. `ALWAYS_DISALLOWED_TOOLS`
|
|
80
93
|
in `src/safety/always-disallowed.ts`. Cannot be widened by skills,
|
|
81
94
|
by config, or by allow-mode.
|
|
82
|
-
- **Risk tier**:
|
|
83
|
-
|
|
84
|
-
|
|
95
|
+
- **Risk tier**: every daemon-API operation carries one of three tiers —
|
|
96
|
+
`autonomous`, `read_sensitive`, or `approve`. *Autonomous* runs without a
|
|
97
|
+
prompt. *Read-sensitive* reads (email, calendar, notes, context files) are
|
|
98
|
+
the same blast radius as autonomous but are gated by a read token when
|
|
99
|
+
`enforceReadToken` is on. *Approve* is blocked until you confirm with a
|
|
100
|
+
bearer token (the dashboard does this when you click Approve). There is no
|
|
101
|
+
separate "notify" tier — that behaviour now lives in the skill prompts: for
|
|
102
|
+
potentially destructive actions the agent DMs you first, then proceeds. See
|
|
103
|
+
[Safety model](safety-model.md) for the full taxonomy.
|
|
85
104
|
|
|
86
105
|
## Concrete Examples
|
|
87
106
|
|
|
88
|
-
|
|
107
|
+
The daemon API is the agent's only write path, so most of its own writes are
|
|
108
|
+
`autonomous` (the memory chokepoint validates and snapshots them). The
|
|
109
|
+
absolute-block layer and Approve tier are where the agent is actually stopped.
|
|
110
|
+
|
|
111
|
+
| Action | What gates it |
|
|
89
112
|
|---|---|
|
|
90
|
-
| Read `today.md` | read |
|
|
91
|
-
| Append to `agent
|
|
92
|
-
|
|
|
93
|
-
|
|
|
94
|
-
|
|
|
95
|
-
| `chmod` on a daemon-owned file |
|
|
113
|
+
| Read `state/today.md` | `read_sensitive` (read token if `enforceReadToken`) |
|
|
114
|
+
| Append to `journal/agent.md` | `autonomous` — daemon API write |
|
|
115
|
+
| Update `plans/roadmap.md` | `autonomous`, plus a roadmap write-lock |
|
|
116
|
+
| Send a DM | `autonomous`; destructive follow-ups DM you first |
|
|
117
|
+
| Configure an automation trigger | `approve` — needs a bearer token |
|
|
118
|
+
| `chmod` on a daemon-owned file | Safe-mode disallowed (allowed in Allow mode) |
|
|
119
|
+
| Recursive delete (`rm -rf`), `sudo`, secret-file read | absolute-block (refused in both modes) |
|
|
96
120
|
|
|
97
121
|
## Where You See It in the Dashboard
|
|
98
122
|
|
|
99
|
-
- **Settings → Advanced** holds `disallowedTools
|
|
100
|
-
|
|
101
|
-
- **
|
|
123
|
+
- **Settings → Advanced** holds the `disallowedTools` and
|
|
124
|
+
`allowedToolsOverride` tool-policy lists.
|
|
125
|
+
- **Settings → Models & Cost** holds the per-backend Safe / Allow
|
|
126
|
+
**Execution Mode** switch (you can also set it in the setup wizard).
|
|
127
|
+
- **Activity** logs every absolute-blocked tool call as
|
|
128
|
+
`action_type='blocked_absolute'`.
|
|
102
129
|
- **Approvals** is where Approve-tier actions queue when they fire.
|
|
103
130
|
|
|
104
131
|
## Related
|
|
105
132
|
|
|
133
|
+
- [Safety model](safety-model.md) — the full risk-tier taxonomy and where
|
|
134
|
+
each API endpoint is classified.
|
|
106
135
|
- [Skills](skills.md) — where each session's per-task `allowed-tools` lives.
|
|
107
136
|
- [Approvals](../features/operations/approvals.md) — the operator-side
|
|
108
137
|
surface for Approve-tier actions.
|
|
@@ -12,19 +12,20 @@ aliases:
|
|
|
12
12
|
- on-demand retrospective
|
|
13
13
|
category: concepts
|
|
14
14
|
summary: |
|
|
15
|
-
Aitne's
|
|
16
|
-
actions run autonomously, a small set of posture-changing
|
|
17
|
-
require explicit Approve. The previous Notify tier (DM the
|
|
18
|
-
before / during a write) was abolished — the operator's
|
|
19
|
-
list is now the primary defense, and "what did the
|
|
20
|
-
answered on demand via `GET /api/agent/actions` instead
|
|
21
|
-
a daily digest.
|
|
15
|
+
Aitne's risk classifier dropped from three write tiers to two: most
|
|
16
|
+
actions run autonomously, and a small set of posture-changing
|
|
17
|
+
operations require explicit Approve. The previous Notify tier (DM the
|
|
18
|
+
operator before / during a write) was abolished — the operator's
|
|
19
|
+
`deniedTools` list is now the primary defense, and "what did the
|
|
20
|
+
agent do?" is answered on demand via `GET /api/agent/actions` instead
|
|
21
|
+
of pushed as a daily digest. (The read-gating `ReadSensitive` tier is
|
|
22
|
+
unchanged.)
|
|
22
23
|
section: safety
|
|
23
24
|
tags:
|
|
24
25
|
- core
|
|
25
26
|
- safety
|
|
26
27
|
- integrations
|
|
27
|
-
-
|
|
28
|
+
- audit
|
|
28
29
|
status: stable
|
|
29
30
|
ask_examples:
|
|
30
31
|
- Why doesn't the agent ask before sending an email anymore?
|
|
@@ -33,7 +34,7 @@ ask_examples:
|
|
|
33
34
|
- Where do I see what the agent has been doing?
|
|
34
35
|
locale: en-US
|
|
35
36
|
created: 2026-04-26
|
|
36
|
-
updated: 2026-
|
|
37
|
+
updated: 2026-06-07
|
|
37
38
|
keywords:
|
|
38
39
|
- deniedTools
|
|
39
40
|
- safety floor
|
|
@@ -50,10 +51,16 @@ related:
|
|
|
50
51
|
- reference/disallowed-tools
|
|
51
52
|
ui_anchors:
|
|
52
53
|
- /connections
|
|
53
|
-
- /
|
|
54
|
-
|
|
55
|
-
-
|
|
56
|
-
|
|
54
|
+
- /connections/mail
|
|
55
|
+
- /connections/calendar
|
|
56
|
+
- /analytics
|
|
57
|
+
api_endpoints:
|
|
58
|
+
- GET /api/agent/actions
|
|
59
|
+
- POST /api/integrations/:key/exec
|
|
60
|
+
- PATCH /api/integrations/:key
|
|
61
|
+
context_files:
|
|
62
|
+
- policies/integrations.md
|
|
63
|
+
- journal/agent.md
|
|
57
64
|
---
|
|
58
65
|
|
|
59
66
|
# Safety Model (deniedTools + Approve Tier)
|
|
@@ -67,8 +74,8 @@ The risk classifier has two write tiers, not three:
|
|
|
67
74
|
delete event, …) and for normal context writes.
|
|
68
75
|
- **Approve** — agent must present a Bearer token issued through the
|
|
69
76
|
dashboard. Reserved for posture-changing daemon configuration:
|
|
70
|
-
flipping integration modes, swapping the main backend,
|
|
71
|
-
backends, wiping config.
|
|
77
|
+
flipping integration modes, swapping the main backend, enabling/
|
|
78
|
+
disabling backends, wiping config.
|
|
72
79
|
- (`ReadSensitive` is the third tier, but it gates *reads* of personal
|
|
73
80
|
data — orthogonal to write notifications. It is unchanged.)
|
|
74
81
|
|
|
@@ -123,27 +130,26 @@ of "report to me" events. Information about what the agent did is
|
|
|
123
130
|
bare `*`.
|
|
124
131
|
- **`/api/integrations/:key/exec`** — the cross-backend chokepoint
|
|
125
132
|
(task mode; the RPC-style `/invoke` route was retired 2026-05-01,
|
|
126
|
-
see `docs/design/17-delegated-mode-v2.md` §4.2).
|
|
127
|
-
server-side
|
|
128
|
-
|
|
129
|
-
task-mode planner can only pick from the allowed surface. A
|
|
130
|
-
fully-denied surface short-circuits with `errorClass: "denied_tool"`
|
|
131
|
-
before any subprocess spawn.
|
|
133
|
+
see `docs/design/17-delegated-mode-v2.md` §4.2). It enforces
|
|
134
|
+
`deniedTools` server-side — see the *Where the Defenses Apply* table
|
|
135
|
+
below for the exact mechanism.
|
|
132
136
|
- **`agent_actions`** — SQLite table of every agent action. Direct +
|
|
133
|
-
cross-backend rows are full-fidelity (
|
|
137
|
+
cross-backend rows are full-fidelity (cross-backend task-mode writes
|
|
134
138
|
emit `delegated_task.run` / `delegated_task.exec` /
|
|
135
|
-
`delegated_task.tool_step`;
|
|
136
|
-
|
|
139
|
+
`delegated_task.tool_step`; the `delegated_proxy.invoke` row type
|
|
140
|
+
carries both legacy rows from the retired RPC `/invoke` route and
|
|
141
|
+
the hourly drift-detection probes still written by the
|
|
142
|
+
delegated-sync worker). Same-backend native MCP rolls up to
|
|
137
143
|
`mcp_tool_calls` + the parent session row.
|
|
138
144
|
|
|
139
145
|
## Where the Defenses Apply
|
|
140
146
|
|
|
141
147
|
| Path | Enforcement |
|
|
142
148
|
|---|---|
|
|
143
|
-
| Direct mode (`/api/mail/*`, `/api/calendar/*`) |
|
|
149
|
+
| Direct mode (`/api/mail/*`, `/api/calendar/*`) | `deniedTools` is **inert** — the daemon runs the poller and the agent calls the daemon API through its direct-mode skill, so there is no per-tool deny surface. The list only persists for a future flip to delegated mode. Direct-mode safety comes from the route-level risk tiers (Approve gates posture-changing writes) and the always-disallowed layer, not `deniedTools`. |
|
|
144
150
|
| Cross-backend (`/api/integrations/:key/exec`) | Invoker filters the integration's `capabilityTools` through `deniedTools` before spawning the delegated backend so the task-mode planner can only pick from the allowed surface. A fully-denied surface short-circuits with `errorClass: "denied_tool"`; individual tool denials surface as the same error from the invoker's `resolveAllowedToolPatterns`. |
|
|
145
151
|
| Same-backend / native MCP — Claude | `collectSessionDeniedTools` merges the deny patterns into the SDK's `disallowedTools` array at `query()` time. Same code path covers both delegated same-backend and native — they share the in-session MCP surface. |
|
|
146
|
-
| Same-backend / native MCP — Gemini | Patterns are folded into `generateAdminPolicy`'s TOML deny rules (priority
|
|
152
|
+
| Same-backend / native MCP — Gemini | Patterns are folded into `generateAdminPolicy`'s TOML deny rules (priority 936 — above the registry-driven native allows, below the absolute-block layer). |
|
|
147
153
|
| Same-backend / native MCP — Codex | **Prose-only.** Codex bundles its connector apps into the binary; there is no per-tool deny config and the workspace-write sandbox does not match MCP tool calls. Skill prose lists the denied tools explicitly. Operators who require strict deny on Gmail / Calendar should pick a non-Codex DM backend or route those integrations through `delegated` cross-backend mode (which IS deny-enforced at `/exec`). |
|
|
148
154
|
|
|
149
155
|
## Recommended Starter Denylists
|
|
@@ -220,26 +226,29 @@ When the operator asks "what did you do yesterday?" / "have you sent
|
|
|
220
226
|
anything from Gmail this week?" the agent calls:
|
|
221
227
|
|
|
222
228
|
```bash
|
|
223
|
-
curl 'http://localhost:8321/api/agent/actions?since=2026-04-25T00:00:00Z&kind=delegated_task.
|
|
229
|
+
curl 'http://localhost:8321/api/agent/actions?since=2026-04-25T00:00:00Z&kind=delegated_task.exec&kind=delegated_task.tool_step&limit=50'
|
|
224
230
|
```
|
|
225
231
|
|
|
226
232
|
and answers in conversation. The endpoint:
|
|
227
233
|
|
|
228
234
|
- Lives at `Autonomous` tier — the agent reads only its own audit
|
|
229
235
|
trail, no operator data.
|
|
230
|
-
- Accepts `since
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
236
|
+
- Accepts `since` (ISO-8601; defaults to the last 24h if omitted),
|
|
237
|
+
`kind` (an `action_type` filter — repeat for multiple values, e.g.
|
|
238
|
+
`?kind=a&kind=b`), and `limit` (default 50, max 200).
|
|
239
|
+
- Redacts the free-text `error` / `detail` fields via the standard
|
|
240
|
+
secret-redaction utility before serializing.
|
|
241
|
+
- Returns rows from `agent_actions` only. Same-backend / native MCP
|
|
242
|
+
calls surface as their own `action_type` rows (e.g. `kind=mcp`);
|
|
243
|
+
the per-call detail lives in `mcp_tool_calls`, which this endpoint
|
|
244
|
+
does not join — query it separately if you need step-level fidelity.
|
|
245
|
+
|
|
246
|
+
Common `kind` values for the cross-backend proxy: `delegated_task.exec`
|
|
247
|
+
(one header row per `/exec` call), `delegated_task.run` (one header row
|
|
248
|
+
per generic `/run` call), `delegated_task.tool_step` (each individual
|
|
249
|
+
tool call inside the task). The `delegated_proxy.invoke` rows cover the
|
|
250
|
+
retired RPC `/invoke` route plus the delegated-sync worker's hourly
|
|
251
|
+
drift-detection probes — include them when you want that surface too.
|
|
243
252
|
|
|
244
253
|
This **replaces** the rejected daily-digest pattern. Reasons:
|
|
245
254
|
|
|
@@ -248,7 +257,7 @@ This **replaces** the rejected daily-digest pattern. Reasons:
|
|
|
248
257
|
- The operator does not have to manage the agent's reporting calendar.
|
|
249
258
|
|
|
250
259
|
The optional fallback — extending the existing morning routine to
|
|
251
|
-
summarize yesterday's `agent_actions` into `agent
|
|
260
|
+
summarize yesterday's `agent_actions` into `journal/agent.md` — is
|
|
252
261
|
deferred until the on-demand path proves insufficient.
|
|
253
262
|
|
|
254
263
|
## What Stayed Approve-Tier
|
|
@@ -262,21 +271,23 @@ Approve still gates:
|
|
|
262
271
|
|
|
263
272
|
- `PATCH /api/integrations/:key` — mode / `delegatedBackend` /
|
|
264
273
|
`deniedTools` changes.
|
|
265
|
-
- `PUT /api/backends/main`, `
|
|
274
|
+
- `PUT /api/backends/main`, `POST /api/backends/:id/enable`,
|
|
275
|
+
`POST /api/backends/:id/disable`.
|
|
266
276
|
- `PATCH /api/config` for fields that wipe protections.
|
|
267
277
|
- `/api/system/*` — config reset, history purge, factory reset.
|
|
268
278
|
|
|
269
279
|
## Where You See It in the Dashboard
|
|
270
280
|
|
|
271
|
-
- **Connections → \<integration\> → Tool Permissions**
|
|
281
|
+
- **Connections → \<integration\> → Tool Permissions**
|
|
282
|
+
(e.g. `/connections/mail`, `/connections/calendar`) — the
|
|
272
283
|
`deniedTools` editor with the starter list pre-populated. Above the
|
|
273
|
-
editor, the safety guidance prose explains each entry and which
|
|
274
|
-
|
|
275
|
-
- **
|
|
276
|
-
invocations show here
|
|
277
|
-
session.
|
|
278
|
-
- **Activity
|
|
279
|
-
the same
|
|
284
|
+
editor, the safety guidance prose explains each entry and which ones
|
|
285
|
+
are recommended to keep.
|
|
286
|
+
- **Analytics** (`/analytics`) — spend and the delegated-task facet;
|
|
287
|
+
only cross-backend invocations show here, while same-backend MCP
|
|
288
|
+
rolls up under the parent session.
|
|
289
|
+
- **Activity** (`/activity`) — every action with full attribution,
|
|
290
|
+
the same audit trail the agent reads via `GET /api/agent/actions`.
|
|
280
291
|
|
|
281
292
|
## Related
|
|
282
293
|
|
|
@@ -18,15 +18,17 @@ tags:
|
|
|
18
18
|
- skills
|
|
19
19
|
- safety
|
|
20
20
|
- knowledge
|
|
21
|
+
- backends
|
|
21
22
|
status: stable
|
|
22
23
|
ask_examples:
|
|
23
24
|
- What skills does the agent have?
|
|
24
25
|
- How do I add a new skill?
|
|
25
26
|
- Why does the agent refuse to run a tool?
|
|
26
27
|
- How does skill self-optimization work?
|
|
28
|
+
- Where do skill overlays live?
|
|
27
29
|
locale: en-US
|
|
28
30
|
created: 2026-04-25
|
|
29
|
-
updated: 2026-
|
|
31
|
+
updated: 2026-06-07
|
|
30
32
|
keywords:
|
|
31
33
|
- SKILL.md
|
|
32
34
|
- allowed-tools
|
|
@@ -45,6 +47,15 @@ ui_anchors:
|
|
|
45
47
|
- /knowledge
|
|
46
48
|
- /connections/mcp
|
|
47
49
|
- /settings/self-learning
|
|
50
|
+
process_keys:
|
|
51
|
+
- dashboard.docs_qa
|
|
52
|
+
- routine.skill_curation
|
|
53
|
+
config_keys:
|
|
54
|
+
- allowedToolsOverride
|
|
55
|
+
- disallowedTools
|
|
56
|
+
api_endpoints:
|
|
57
|
+
- GET /api/skills
|
|
58
|
+
- GET /api/skills/manifest/:processKey
|
|
48
59
|
---
|
|
49
60
|
|
|
50
61
|
# Skills
|
|
@@ -63,7 +74,7 @@ The agent runs against a real machine. Without scoped permissions, a
|
|
|
63
74
|
"please summarize my mail" turn could in principle invoke `Bash(rm)`,
|
|
64
75
|
post to your social accounts, or rewrite arbitrary files. Skills fix
|
|
65
76
|
that by making the available toolset task-shaped: the morning routine
|
|
66
|
-
loads the
|
|
77
|
+
loads the context/today/observations/schedule skills; a docs question
|
|
67
78
|
loads only `docs-search`. Tools outside the allow-list aren't even
|
|
68
79
|
visible to the model.
|
|
69
80
|
|
|
@@ -71,9 +82,11 @@ visible to the model.
|
|
|
71
82
|
|
|
72
83
|
- **SKILL.md**: the Markdown file that defines a single skill. Lives
|
|
73
84
|
under `agent-assets/skills/<slug>/SKILL.md` in the repo and is
|
|
74
|
-
materialized into each session workdir
|
|
75
|
-
|
|
76
|
-
|
|
85
|
+
materialized into each session workdir under a per-backend namespace —
|
|
86
|
+
`.claude/skills/<slug>/` for Claude, `.codex/skills/` for Codex,
|
|
87
|
+
`.gemini/skills/` for Gemini, and `.opencode/skills/` for OpenCode.
|
|
88
|
+
The frontmatter (`name`, `description`, `allowed-tools`) is byte-identical
|
|
89
|
+
across all four; only the destination directory changes.
|
|
77
90
|
- **`allowed-tools`**: a YAML list in the skill's frontmatter naming
|
|
78
91
|
tools and patterns the session may use. Patterns like
|
|
79
92
|
`Bash(curl http://localhost:8321/api/context/*)` are the daemon's
|
|
@@ -86,7 +99,7 @@ visible to the model.
|
|
|
86
99
|
|
|
87
100
|
## Concrete Examples
|
|
88
101
|
|
|
89
|
-
- `today` — read and rewrite `today.md`.
|
|
102
|
+
- `today` — read and rewrite `state/today.md`.
|
|
90
103
|
- `schedule` — produce per-date schedule files from the calendar.
|
|
91
104
|
- `mail` — search and label messages via the daemon's mail proxy.
|
|
92
105
|
- `docs-search` — read-only fetch over the docs corpus, used only by
|
|
@@ -97,26 +110,29 @@ visible to the model.
|
|
|
97
110
|
|
|
98
111
|
Skills aren't frozen. A background process — **skill curation** —
|
|
99
112
|
watches how your knowledge layout drifts (file moves, new
|
|
100
|
-
sub-folders, schema tweaks
|
|
101
|
-
proposes JSON **overlays** that update specific sections of the
|
|
113
|
+
sub-folders, schema tweaks under `identity/`, `plans/projects/`, etc.)
|
|
114
|
+
and proposes JSON **overlays** that update specific sections of the
|
|
102
115
|
relevant skill: knowledge layout, routing tables, frontmatter
|
|
103
116
|
schema, search recipes, convention notes, cross-references.
|
|
104
117
|
|
|
105
|
-
Overlays live at `<dataDir>/overlays/<
|
|
106
|
-
are merged in by the SkillsCompiler at session-init. The original
|
|
118
|
+
Overlays live at `<dataDir>/skill-curation-overlays/<slug>/<section_id>.json`
|
|
119
|
+
and are merged in by the SkillsCompiler at session-init. The original
|
|
107
120
|
`SKILL.md` files in `agent-assets/skills/` are never rewritten;
|
|
108
|
-
disabling
|
|
121
|
+
disabling self-learning (or deleting the JSON file) reverts to the
|
|
109
122
|
seed payload immediately.
|
|
110
123
|
|
|
111
124
|
The optimizer agent runs in an isolated workdir with a tightly
|
|
112
125
|
scoped toolset (`Bash(curl http://localhost:8321/api/skill-curation/*)`,
|
|
113
|
-
`Read`) and an auto-revert safety net
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
126
|
+
`Read`) and an auto-revert safety net: each cadence cycle the daemon
|
|
127
|
+
re-checks recently-applied overlays, and any section that has
|
|
128
|
+
accumulated *more* drift signal weight after the overlay was applied
|
|
129
|
+
than before is rolled back automatically and frozen for two cycles to
|
|
130
|
+
stop thrashing. This is the only roll-back path — there is no
|
|
131
|
+
per-proposal approve/reject API, just the on/off toggle.
|
|
132
|
+
|
|
133
|
+
Skill curation is **off by default**. The master toggle, curation
|
|
134
|
+
cadence, manual-run trigger, and the per-skill exclusion list are all
|
|
135
|
+
surfaced at **Settings → Self-learning** (`/settings/self-learning`).
|
|
120
136
|
|
|
121
137
|
## Where You See It in the Dashboard
|
|
122
138
|
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
---
|
|
2
|
+
schema_version: 1
|
|
3
|
+
slug: features/integrations/browser-history
|
|
4
|
+
title: Browser History
|
|
5
|
+
id: browser-history
|
|
6
|
+
aliases:
|
|
7
|
+
- browser history
|
|
8
|
+
- browsing history
|
|
9
|
+
- research clusters
|
|
10
|
+
- reload memory
|
|
11
|
+
- B-3
|
|
12
|
+
category: features
|
|
13
|
+
summary: |
|
|
14
|
+
Local-only poller that reads the browser's own SQLite databases
|
|
15
|
+
(Chrome / Chromium / Edge / Brave / Comet / Atlas), records visits as
|
|
16
|
+
observations, derives research clusters from sustained reading
|
|
17
|
+
patterns, and surfaces what you keep refreshing. Nothing leaves the
|
|
18
|
+
daemon.
|
|
19
|
+
section: integrations
|
|
20
|
+
tags:
|
|
21
|
+
- integrations
|
|
22
|
+
- observations
|
|
23
|
+
- browser-history
|
|
24
|
+
- polling
|
|
25
|
+
- autonomous
|
|
26
|
+
status: stable
|
|
27
|
+
ask_examples:
|
|
28
|
+
- How does Aitne use my browser history?
|
|
29
|
+
- What is a research cluster?
|
|
30
|
+
- What does `!checks` show?
|
|
31
|
+
- Does my browsing data go anywhere?
|
|
32
|
+
- How do I opt out of browser history?
|
|
33
|
+
locale: en-US
|
|
34
|
+
created: 2026-05-22
|
|
35
|
+
updated: 2026-06-07
|
|
36
|
+
keywords:
|
|
37
|
+
- browser history
|
|
38
|
+
- browser history poller
|
|
39
|
+
- research cluster
|
|
40
|
+
- reload signal
|
|
41
|
+
- "!checks"
|
|
42
|
+
- "!research"
|
|
43
|
+
- shopping comparison
|
|
44
|
+
- two-option offer
|
|
45
|
+
- local-only
|
|
46
|
+
related:
|
|
47
|
+
- features/messaging/bang-commands
|
|
48
|
+
- features/integrations/notion
|
|
49
|
+
- features/operations/managed-chromium
|
|
50
|
+
- features/routines/weekly-review
|
|
51
|
+
- features/routines/morning-routine
|
|
52
|
+
ui_anchors:
|
|
53
|
+
- /settings/integrations/browser-history
|
|
54
|
+
config_keys:
|
|
55
|
+
- browserHistoryConsentAccepted
|
|
56
|
+
- browserHistoryBrowserOverrides
|
|
57
|
+
- browserHistoryCategories
|
|
58
|
+
- browserHistoryRetentionDays
|
|
59
|
+
- browserHistorySearchQueryRetentionDays
|
|
60
|
+
- browserHistoryLifecycle
|
|
61
|
+
- browserHistoryResearchDomainAllowlist
|
|
62
|
+
- browserHistoryResearchDomainDenylist
|
|
63
|
+
process_keys:
|
|
64
|
+
- routine.research_cluster_update
|
|
65
|
+
- routine.research_offer_dm
|
|
66
|
+
- routine.research_dispatch
|
|
67
|
+
- routine.research_wiki_summary
|
|
68
|
+
api_endpoints:
|
|
69
|
+
- GET /api/browser-history/status
|
|
70
|
+
- GET /api/browser-history/research-clusters
|
|
71
|
+
- POST /api/browser-history/offers/:slug/accept
|
|
72
|
+
- POST /api/browser-history/offers/:slug/decline
|
|
73
|
+
- GET /api/browser-history/reloads/weekly
|
|
74
|
+
---
|
|
75
|
+
|
|
76
|
+
# Browser History
|
|
77
|
+
|
|
78
|
+
Aitne can read the SQLite history databases that Chrome, Chromium,
|
|
79
|
+
Edge, Brave, Comet, and Atlas already maintain on disk, classify visits
|
|
80
|
+
into categories, and use the result to notice what you've been
|
|
81
|
+
researching, what you've been refreshing, and what comparison-shopping
|
|
82
|
+
windows you're in. Everything stays local — no URLs, titles, or
|
|
83
|
+
clicks leave the daemon.
|
|
84
|
+
|
|
85
|
+
## What It Does
|
|
86
|
+
|
|
87
|
+
- **Reads visits** from the browser's own history DB on a 30-min
|
|
88
|
+
cadence (per browser, per profile) and inserts them into the
|
|
89
|
+
daemon's `browser_visits` table.
|
|
90
|
+
- **Counts reloads** per `<domain>/<first-path>` into
|
|
91
|
+
`browser_reload_signals`. Surfaced via [`!checks`](../messaging/bang-commands.md)
|
|
92
|
+
for the agent-day and via the weekly review's "this week you
|
|
93
|
+
checked" block.
|
|
94
|
+
- **Derives research clusters** when a topic crosses meaningful-visits
|
|
95
|
+
/ foreground-time / distinct-domain thresholds. Clusters live in
|
|
96
|
+
`browser_research_clusters` with a slug, display name, journal at
|
|
97
|
+
`context/research/<slug>.md`, and a status (`active | dormant |
|
|
98
|
+
muted | concluded`).
|
|
99
|
+
- **Offers engagement DMs** via the Two-Option Offer pattern when a
|
|
100
|
+
cluster qualifies: pick "research dive" (parallel web research +
|
|
101
|
+
summary) or "wiki summary" (Obsidian / Notion / local context).
|
|
102
|
+
Accept paths run through `routine.research_dispatch` /
|
|
103
|
+
`routine.research_wiki_summary`; decline silences offers for 14
|
|
104
|
+
days; mute / unmute / rename / conclude via [`!research`](../messaging/bang-commands.md).
|
|
105
|
+
- **Detects shopping comparison windows** — 90-min sliding windows
|
|
106
|
+
containing ≥3 distinct ASINs surface as comparison sessions the
|
|
107
|
+
agent can summarise.
|
|
108
|
+
- **Powers the pre-morning digest** — yesterday's reading and reload
|
|
109
|
+
patterns feed the morning routine's pre-pass digest.
|
|
110
|
+
|
|
111
|
+
## Privacy and Consent
|
|
112
|
+
|
|
113
|
+
- **Default off.** The integration does not start until the operator
|
|
114
|
+
flips `browserHistoryConsentAccepted = true` on the
|
|
115
|
+
**Settings → Integrations → Browser History**
|
|
116
|
+
(`/settings/integrations/browser-history`) page. The integration only
|
|
117
|
+
supports `direct` (the daemon poller) or `disabled` — there is no
|
|
118
|
+
delegated or native mode.
|
|
119
|
+
- **Local-only.** No request leaves the daemon. The browser's
|
|
120
|
+
history file is opened read-only; the daemon never reaches into
|
|
121
|
+
cookies, login sessions, or profile dirs other than the history DB.
|
|
122
|
+
- **Per-browser opt-in.** `browserHistoryBrowserOverrides` lets you
|
|
123
|
+
enable / disable each detected browser independently and override
|
|
124
|
+
the DB path for atypical installs.
|
|
125
|
+
- **Per-category gate.** `browserHistoryCategories` controls which
|
|
126
|
+
visit categories (research / shopping / news / dev / entertainment / …) get
|
|
127
|
+
ingested. Categories you exclude are dropped at ingest time, not
|
|
128
|
+
filtered later.
|
|
129
|
+
- **Retention.** `browserHistoryRetentionDays` (visits) and
|
|
130
|
+
`browserHistorySearchQueryRetentionDays` (search queries) cap the
|
|
131
|
+
on-disk window; older rows are deleted on the next ingest tick.
|
|
132
|
+
- **Domain controls.** `browserHistoryResearchDomainAllowlist` /
|
|
133
|
+
`…Denylist` filter which domains can qualify a research cluster.
|
|
134
|
+
|
|
135
|
+
## How Clusters Qualify
|
|
136
|
+
|
|
137
|
+
A research cluster qualifies when the combination of meaningful visits,
|
|
138
|
+
foreground time, and distinct domains crosses the thresholds in
|
|
139
|
+
`DEFAULT_OFFER_THRESHOLDS` (tunable via `browserHistoryLifecycle`).
|
|
140
|
+
On each tick the poller evaluates the offer triggers per active cluster
|
|
141
|
+
(`evaluateOfferTriggers`); once the **per-cluster offer rate-limit gate**
|
|
142
|
+
(`gateOfferRateLimit`) approves — this is the 14-day, per-slug offer
|
|
143
|
+
backoff, not the daemon-wide session gate that Phase 9 removed — a
|
|
144
|
+
Two-Option Offer DM is composed by the `routine.research_offer_dm`
|
|
145
|
+
process key.
|
|
146
|
+
|
|
147
|
+
Accepting either path clears every pending-offer row for that slug, so a
|
|
148
|
+
later tick cannot re-offer the same cluster.
|
|
149
|
+
|
|
150
|
+
## Owner Controls
|
|
151
|
+
|
|
152
|
+
| Surface | What it does |
|
|
153
|
+
|---|---|
|
|
154
|
+
| `!checks` | Today's top reload patterns (pure DB read, safe while paused). |
|
|
155
|
+
| `!research` | List active + dormant clusters. |
|
|
156
|
+
| `!research <slug>` | Show one cluster's detail. |
|
|
157
|
+
| `!research accept <slug>` | Enqueue `routine.research_dispatch`. |
|
|
158
|
+
| `!research wiki <slug>` | Enqueue `routine.research_wiki_summary`. |
|
|
159
|
+
| `!research decline <slug>` | Silence offers for 14 days. |
|
|
160
|
+
| `!research mute <slug>` / `unmute` | Toggle offers off (until unmute) / restore. |
|
|
161
|
+
| `!research rename <slug> <new name>` | Change display name. |
|
|
162
|
+
| `!research conclude <slug>` | Mark concluded; preserve the journal. |
|
|
163
|
+
| Natural-language reply to an offer DM | The `browser-history-respond` skill bridges into the same `/api/browser-history/offers/<slug>/{accept,decline}` call. |
|
|
164
|
+
|
|
165
|
+
## When It Runs
|
|
166
|
+
|
|
167
|
+
| Signal | Cadence | Source |
|
|
168
|
+
|---|---|---|
|
|
169
|
+
| Visit ingest | Every 30 min per browser profile | `BrowserHistoryPoller` |
|
|
170
|
+
| Cluster engagement evaluation | Same tick as visit ingest | `pipeline/offer-triggers.ts` |
|
|
171
|
+
| Shopping-comparison window scan | Same tick, 7-day lookback | `SHOPPING_COMPARISON_WINDOW_MS` constants |
|
|
172
|
+
| Nightly journal append | Agent-day boundary | `routine.research_cluster_update` (lite tier, one row per active cluster per day) |
|
|
173
|
+
| Weekly reload-memory block | Friday weekly review | `routine.weekly_review` reads `/api/browser-history/reloads/weekly` |
|
|
174
|
+
| Pre-morning digest | Morning routine pre-pass | Yesterday's reading + reloads feed the digest block |
|
|
175
|
+
|
|
176
|
+
## When Something Goes Wrong
|
|
177
|
+
|
|
178
|
+
- **The settings page shows no browsers.** Open
|
|
179
|
+
`/settings/integrations/browser-history` and run `aitne doctor` — the
|
|
180
|
+
platform detector might be failing to resolve the user's profile dir.
|
|
181
|
+
The daemon log line will name the candidate paths it tried.
|
|
182
|
+
- **A cluster keeps re-offering.** Check the `lastResearchOfferAt` /
|
|
183
|
+
`lastWikiOfferAt` columns; the rate-limit gate uses those for the
|
|
184
|
+
14-day backoff. `!research decline <slug>` stamps both fields.
|
|
185
|
+
- **`!checks` is empty.** That's the common case for a quiet day —
|
|
186
|
+
the reload signals are gated to the agent-day, not UTC.
|
|
187
|
+
|
|
188
|
+
## Related
|
|
189
|
+
|
|
190
|
+
- [Managed Chromium](../operations/managed-chromium.md) — separate
|
|
191
|
+
experimental flow for *driving* a Chromium profile (B-4), not
|
|
192
|
+
reading browser history.
|
|
193
|
+
- [Weekly Review](../routines/weekly-review.md)
|
|
194
|
+
- [Morning Routine](../routines/morning-routine.md)
|
|
195
|
+
- [Bang Commands](../messaging/bang-commands.md)
|
|
196
|
+
- [Glossary: Research Cluster](../../glossary.md#research-cluster)
|