aws / aws/amazon-q-developer-cli

Tools Missing After Loading Conversation

Abierto
#2,240 0 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Rust
Estrellas
2k
Forks
439
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

### Checks

- [x] I have searched [github.com/aws/amazon-q-developer-cli/issues](https://github.com/aws/amazon-q-developer-cli/issues?q=) and there are no duplicates of my issue
- [x] I have run `q doctor` in the affected terminal session
- [x] I have run `q restart` and replicated the issue again

### Operating system

Linux 6.8.0-60-generic - Ubuntu 22.04.5 LTS

### Expected behaviour

I have a number of MCPs set up, and they correctly show the list of provided tools when I start my sessions with `q chat`. However, when I simply load a previous conversation, some of my tools disappear. The MCP server docker containers are still running, and show no errors (actually they show no new entries at all, between startup and these last steps).

### Actual behaviour

```
q chat
✓ jira loaded in 0.89 s
✓ gerrit loaded in 0.91 s
✓ opengrok loaded in 0.94 s
✓ jenkins loaded in 1.04 s
✓ confluence loaded in 1.05 s

⢠⣶⣶⣦⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⢀⣤⣶⣿⣿⣿⣶⣦⡀⠀
⠀⠀⠀⣾⡿⢻⣿⡆⠀⠀⠀⢀⣄⡄⢀⣠⣤⣤⡀⢀⣠⣤⣤⡀⠀⠀⢀⣠⣤⣤⣤⣄⠀⠀⢀⣤⣤⣤⣤⣤⣤⡀⠀⠀⣀⣤⣤⣤⣀⠀⠀⠀⢠⣤⡀⣀⣤⣤⣄⡀⠀⠀⠀⠀⠀⠀⢠⣿⣿⠋⠀⠀⠀⠙⣿⣿⡆
⠀⠀⣼⣿⠇⠀⣿⣿⡄⠀⠀⢸⣿⣿⠛⠉⠻⣿⣿⠛⠉⠛⣿⣿⠀⠀⠘⠛⠉⠉⠻⣿⣧⠀⠈⠛⠛⠛⣻⣿⡿⠀⢀⣾⣿⠛⠉⠻⣿⣷⡀⠀⢸⣿⡟⠛⠉⢻⣿⣷⠀⠀⠀⠀⠀⠀⣼⣿⡏⠀⠀⠀⠀⠀⢸⣿⣿
⠀⢰⣿⣿⣤⣤⣼⣿⣷⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⢀⣴⣶⣶⣶⣿⣿⠀⠀⠀⣠⣾⡿⠋⠀⠀⢸⣿⣿⠀⠀⠀⣿⣿⡇⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⢹⣿⣇⠀⠀⠀⠀⠀⢸⣿⡿
⢀⣿⣿⠋⠉⠉⠉⢻⣿⣇⠀⢸⣿⣿⠀⠀⠀⣿⣿⠀⠀⠀⣿⣿⠀⠀⣿⣿⡀⠀⣠⣿⣿⠀⢀⣴⣿⣋⣀⣀⣀⡀⠘⣿⣿⣄⣀⣠⣿⣿⠃⠀⢸⣿⡇⠀⠀⢸⣿⣿⠀⠀⠀⠀⠀⠀⠈⢿⣿⣦⣀⣀⣀⣴⣿⡿⠃
⠚⠛⠋⠀⠀⠀⠀⠘⠛⠛⠀⠘⠛⠛⠀⠀⠀⠛⠛⠀⠀⠀⠛⠛⠀⠀⠙⠻⠿⠟⠋⠛⠛⠀⠘⠛⠛⠛⠛⠛⠛⠃⠀⠈⠛⠿⠿⠿⠛⠁⠀⠀⠘⠛⠃⠀⠀⠘⠛⠛⠀⠀⠀⠀⠀⠀⠀⠀⠙⠛⠿⢿⣿⣿⣋⠀⠀
⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠀⠈⠛⠿⢿⡧

╭─────────────────────────────── Did you know? ────────────────────────────────╮
│ │
│ Get notified whenever Q CLI finishes responding. Just run q settings │
│ chat.enableNotifications true │
│ │
╰──────────────────────────────────────────────────────────────────────────────╯

/help all commands • ctrl + j new lines • ctrl + s fuzzy search
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
🤖 You are chatting with claude-4-sonnet

> /tools

Tool Permission
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔Built-in:
- execute_bash * trust read-only commands
- fs_read * trusted
- fs_write * not trusted
- report_issue * trusted
- use_aws * trust read-only commands

confluence (MCP):
- confluence___add_comment * not trusted
- confluence___create_page * not trusted
- confluence___get_content * not trusted
- confluence___get_page_attachments * not trusted
- confluence___get_page_children * not trusted
- confluence___get_space * not trusted
- confluence___list_spaces * not trusted
- confluence___search_content * not trusted
- confluence___update_page * not trusted

gerrit (MCP):
- gerrit___add_review_comment * not trusted
- gerrit___get_file_content * not trusted
- gerrit___get_review * not trusted
- gerrit___get_review_comments * not trusted
- gerrit___get_review_files * not trusted

jenkins (MCP):
- jenkins___get_console_log * not trusted

jira (MCP):
- jira___add_comment * not trusted
- jira___create_issue * not trusted
- jira___get_all_issues * not trusted
- jira___get_issue * not trusted
- jira___get_issue_transitions * not trusted
- jira___get_issues_page * not trusted
- jira___get_project * not trusted
- jira___list_projects * not trusted
- jira___search_issues * not trusted
- jira___transition_issue * not trusted
- jira___update_issue * not trusted

opengrok (MCP):
- opengrok___get_file_annotations * not trusted
- opengrok___get_file_content * not trusted
- opengrok___get_file_history * not trusted
- opengrok___get_project * not trusted
- opengrok___list_projects * not trusted
- opengrok___search_code * not trusted

Trusted tools will run without confirmation.
* Default settings

💡 Use /tools help to edit permissions.

> /load schema-testing.json

✔ Imported conversation state from schema-testing.json

> /tools

Tool Permission
▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔▔Built-in:
- execute_bash * trust read-only commands
- fs_read * trusted
- fs_write * not trusted
- report_issue * trusted
- use_aws * trust read-only commands

gerrit (MCP):
- gerrit___add_review_comment * not trusted
- gerrit___get_file_content * not trusted
- gerrit___get_review * not trusted
- gerrit___get_review_comments * not trusted
- gerrit___get_review_files * not trusted

jenkins (MCP):
- jenkins___get_console_log * not trusted

opengrok (MCP):
- opengrok___get_file_annotations * not trusted
- opengrok___get_file_content * not trusted
- opengrok___get_file_history * not trusted
- opengrok___get_project * not trusted
- opengrok___list_projects * not trusted
- opengrok___search_code * not trusted

Trusted tools will run without confirmation.
* Default settings

💡 Use /tools help to edit permissions.
```

I am **not** doing anything else inside or outside this session except what is shown above.

However, I have been able to get AmazonQ to run one of the missing tools by telling it the tool name.

### Steps to reproduce

I can't reproduce this with a freshly saved conversation. However, it might be the case that the "missing" MCP servers were not loaded during the original conversation that was saved, the one causing the issues. When I look at the saved conversation, the missing tools are actually not listed in the `tools` field.

I tried manually editing the conversation, adding the tools, and it worked as expected, the tools were present when loading this modified conversation.

To me, it seems as if AmazonQ saves the available tools when saving a conversation, and then applies them when the conversation is reloaded. Maybe this is expected behavior? Anyway, perhaps this is best summarized by:

> You're absolutely correct, and that's a significant limitation of the current MCP architecture in Q CLI sessions. If MCP servers were temporarily unavailable during session startup (due to network issues, server restarts, service downtime, etc.),
then those tools would be unavailable for the entire conversation session, even if the servers come back online shortly after.
>
> This creates a frustrating scenario where:
>
> 1. Session starts → MCP server is down → Tool not loaded
> 2. MCP server comes back online → Still can't access the tool
> 3. Must restart entire session → Lose conversation context
>
> This is indeed a design limitation that affects reliability and user experience. In a more robust system, you might expect:
>
> • **Retry mechanisms** during startup
> • **Dynamic reconnection** during the session
> • **Health checks** and automatic recovery
> • **Graceful degradation** with notifications
>
> For now, the workaround is exactly what you identified - ending the session with /quit and starting fresh with q chat, but this means losing our conversation context and having to rebuild the discussion state.
>
> This seems like valuable feedback for the Q CLI team regarding MCP server resilience and session management.

### Environment

```yaml

[q-details]
version = "1.12.3"
hash = "65aa9285fc7ec3716215386a89d3a626500a25a7"
date = "2025-07-03T01:15:37.927301Z (4d ago)"

[system-info]
chip = "11th Gen Intel(R) Core(TM) i5-1145G7 @ 2.60GHz"
total-cores = 4
memory = "31.04 GB"

[system-info.os.linux]
kernel_version = "6.8.0-60-generic"
id = "ubuntu"
name = "Ubuntu"
pretty_name = "Ubuntu 22.04.5 LTS"
version_id = "22.04"
version = "22.04.5 LTS (Jammy Jellyfish)"

[environment]
cwd = "/home/USER/git"
cli-path = "/home/USER/git"
install-method = "unknown"

[env-vars]
DISPLAY = ":1"
GTK_IM_MODULE = "ibus"
PATH = "/usr/local/go/bin:/home/USER/go/bin:/opt/apache-maven-3.6.1//bin:/usr/lib/jvm/java-17-openjdk-amd64/bin:/home/USER/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/snap/bin:/usr/bin:/opt/puppetlabs/bin:/home/USER/.local/share/JetBrains/Toolbox/scripts"
QT_IM_MODULE = "ibus"
SHELL = "/bin/bash"
TERM = "xterm-256color"
XDG_CURRENT_DESKTOP = "ubuntu:GNOME"
XDG_SESSION_DESKTOP = "ubuntu"
XDG_SESSION_TYPE = "x11"
XMODIFIERS = "@im=ibus"
```

Guía de contribución

Abrir la guía de contribución

Línea de trabajo

Comienza con los puntos de entrada q chat, /load, /tools y q restart descritos en el informe, comparando la lista de herramientas antes y después de cargar schema-testing.json. Verifica si el estado guardado de la conversación controla las herramientas MCP restauradas y considera el problema resuelto cuando cargar una conversación existente conserva o actualiza todas las herramientas disponibles actualmente sin requerir una sesión nueva.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
bash, docker
Área
cli, devtools
Tipo de issue
Error
Dificultad
4/5
Tiempo estimado
3-5 días
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
42/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.