Skip to content

[Bug]: kanban init profile discovery hardcodes ~/.hermes/profiles instead of using get_default_hermes_root() #19017

@jackey8616

Description

@jackey8616

Bug Description

list_profiles_on_disk() in kanban_db.py hardcodes Path.home() / ".hermes" / "profiles",
so hermes kanban init always reports "No profiles found" on custom-root
deployments (e.g. HERMES_HOME=/opt/data).

Steps to Reproduce

  1. Create a fresh working directory:
mkdir hermes-test && cd hermes-test
mkdir -p data/profiles/my-agent
echo "model: {}" > data/profiles/my-agent/config.yaml
  1. Build and run with Docker, mounting the data directory as HERMES_HOME:
docker run --rm \
  -e HERMES_HOME=/data \
  -v $(pwd)/data:/data \
  nousresearch/hermes-agent:latest \
  hermes kanban init
  1. Observe the output:
Fixing ownership of /data to hermes (10000)
Dropping root privileges
Syncing bundled skills into ~/.hermes/skills/ ...
  + yuanbao
  + dogfood
  ....
Done: 89 new, 0 updated, 0 unchanged. 89 total bundled.
Kanban DB initialized at /data/kanban.db

No profiles found under ~/.hermes/profiles/. <---------- HERE
Create one with `hermes -p <name> setup` before assigning tasks.

Next step: start the gateway so ready tasks actually get picked up.
  hermes gateway start

The gateway hosts an embedded dispatcher that ticks every 60 seconds
by default (config: kanban.dispatch_interval_seconds). Without a
running gateway, tasks stay in 'ready' forever.

Expected Behavior


Dropping root privileges
Syncing bundled skills into ~/.hermes/skills/ ...

Done: 0 new, 0 updated, 89 unchanged. 89 total bundled.
Kanban DB initialized at /data/kanban.db

Discovered 1 profile(s) on disk; any of these can be an --assignee:
  my-agent
^^^^^^^^^^^^^^^^^^^^^^^ HERE

Next step: start the gateway so ready tasks actually get picked up.
  hermes gateway start

The gateway hosts an embedded dispatcher that ticks every 60 seconds
by default (config: kanban.dispatch_interval_seconds). Without a
running gateway, tasks stay in 'ready' forever.

Should discover profiles under get_default_hermes_root() / "profiles",
consistent with how kanban_db_path() and workspaces_root() were fixed
in #18985.

Actual Behavior

The profile is not found.

Affected Component

CLI (interactive chat)

Messaging Platform (if gateway-related)

No response

Debug Report

Debug report uploaded:
  Report  https://paste.rs/82rSk

Operating System

macOS 15.6.1

Python Version

No response

Hermes Version

No response

Additional Logs / Traceback (optional)

Root Cause Analysis (optional)

list_profiles_on_disk() uses Path.home() / ".hermes" / "profiles"
instead of get_default_hermes_root() / "profiles".

Proposed Fix (optional)

No response

Are you willing to submit a PR for this?

  • I'd like to fix this myself and submit a PR

Metadata

Metadata

Assignees

No one assigned

    Labels

    P2Medium — degraded but workaround existsarea/dockerDocker image, Compose, packagingcomp/cliCLI entry point, hermes_cli/, setup wizardtype/bugSomething isn't working

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions