Troubleshooting
Symptom-by-symptom fixes for common problems.
A skill is not loading - make sure it is installed from the Customize page. Optional and custom skills require installation. If you see an access denied message ask your admin to share the skill, or the project holding it, with you.
Try it opens a chat with "Couldn't switch that on" - the chat opened, but the skill, app or connector behind the link could not be loaded into it, so the agent will answer without it. Open it from Customize: a row showing Connect, Reconnect or Set up needs that step first, and a row that is missing entirely was removed or is no longer shared with you. A connector that needs signing in goes to its sign-in page instead and returns to the chat once connected.
A shared chat shows "No answer from" someone the agent asked - the agent asked a colleague for something only their own accounts hold, and the request expired after 24 hours without an approved answer. The line reads the same whether they skipped it or never saw it, so nothing more can be learned from it. Ask them directly, or ask the agent again to file a fresh request.
A shared link says "Shared with someone else" - the link is invite-only and no email address on the account you are signed in with equals the invited one. The page names the address you are signed in as. Choose Switch account and sign in or sign up with the address the email went to, or ask the sharer to add the address you use.
A share email never arrived - check spam first. If the address once chose Don't email me again in a share email, Ghostlyn sends it no share email from anyone, and the sharer's dialog shows the address with no Emailed date. The recipient can still open the link by signing in with that address.
A chat opened from Try it or a link is missing from chat history - a chat appears in history and the sidebar's Chats list only once it holds a message. Send something and it shows up. An abandoned one stays out of the list on purpose, and its address still opens it.
A custom skill stopped activating, or a hidden one became visible, after an
agent edited it - a rewrite built from a copy the agent had not read from disk
resets every frontmatter key the write omitted to its default: activate to
false, disable-model-invocation to false and user-invocable to true. Open
the skill's SKILL.md in the file editor, check the frontmatter against what it
should be and correct the affected keys directly.
An old link to a skill, app, connector or project shows the not-found page - their pages moved from /bundles to /customize, and project pages to /projects, with no redirect from the old addresses. Links in older chat replies and emails still point at /bundles. Open the skill, app or connector from Customize, or the project from Projects in the sidebar. A /files/ or /history/ short link keeps working.
A reply ends with "The model got stuck and stopped before answering" - the model filled its whole output allowance without finishing a step, usually by repeating itself inside a tool call. Ghostlyn already retried that step once before showing the message. Send the request again, or reword it more narrowly. A reply ending with "hit its length limit" is different: the answer itself was long, so ask for it one section at a time.
Read aloud shows "Couldn't read reply aloud" or stays silent - the message beneath the notice names the cause. "Monthly limit reached" means the account has used its monthly allowance, which counts speech like any other usage, and the reset date follows. "Too many requests" means too many replies were read in a short time, so wait the number of seconds shown. With no message, the speech service failed, and pressing Read aloud again usually works. A reply that is only code has nothing to read. If the button shows playing and nothing sounds, check that the browser tab is not muted and the device volume is up.
Dictation shows "Couldn't use the microphone" - the message beneath it names the cause. "Allow microphone access" means the browser blocked the microphone for this site, so allow it in the browser's site settings, or on an iPhone under Settings > Safari > Microphone, and press the microphone again. "No microphone was found" means the device has none connected, so plug one in or switch devices. "Couldn't transcribe recording" means the session reached the transcription service and failed, or the monthly limit was reached, as the message says. Whatever text already streamed in stays in the composer, so only what was still unsaid is lost.
Dictation shows "No speech was heard" - the session reached the transcription service and held no words. Watch the level meter beside the stop button while speaking: flat dots mean the browser is recording the wrong input, so pick the right microphone in the browser's site settings or the system's sound settings and check it is not muted. A tap too short to say anything gives the same message.
The composer shows no microphone button - the browser lacks AudioWorklet,
microphone access or WebSocket support. Current Chrome, Edge, Firefox and
Safari all have them, so update the browser or switch to one of them. A shared
chat page and a task's thread never show the button.
A chat marked unread turns read again as soon as it is opened - this is expected. Opening a chat marks it read, so Mark as unread holds only until the chat is opened again.
Skill loaded but does not seem to do anything - the agent may need more context. Tell it specifically what you want the skill to do rather than asking a general question. For example instead of "help me with LinkedIn" try "use the LinkedIn skill to draft a post about our product launch."
A Word, Excel or PowerPoint file was not saved and the agent names a part that is not well-formed XML - the script that built or edited the file produced broken markup, so the save was refused and the stored file was left as it was. Ask the agent to try the change again. An edit to a document over 2 MB is not supported yet, so ask for a new document written from its text instead.
Skill cannot access an external service - some skills need a connection or API key to work. Go to Settings > Connections to check whether the required service is connected. If the skill needs an API key check Settings > Credentials. A company key applies automatically once an admin of the organization's default project sets it on that project's Authorization page, which Organization settings > Credentials opens. A key the skill's own item should share is set on that item's Authorization page.
GitHub is connected but a repository still will not sync or answer - being connected only proves who you are. GitHub also needs the app installed on the specific repository, which is a separate step. Go to Settings > Connections and follow the "Repositories" link on the GitHub row to install it on the repository, or to add one you missed the first time.
GitHub refuses to open an issue, push a change or create a repository -
connecting GitHub always starts read only, and a read-only connection cannot
write. Click Allow changes on the GitHub row at Settings > Connections, on the
Sync page or on the card the chat itself raises, then approve write access on
GitHub's consent screen.
Connecting Outlook shows "Need admin approval" - the company's Microsoft 365 tenant lets members consent only to verified apps, or to none at all. A tenant administrator grants consent once for everyone in the Microsoft Entra admin center, under Enterprise applications > Ghostlyn > Permissions > Grant admin consent. Connecting then works for every member.
Outlook Calendar says the account type does not support availability - Microsoft serves free and busy times for work and school accounts only, so finding a meeting time does not work on a personal Outlook.com account. Listing, creating and answering events still works.
A two-way GitHub link shows Diverged - the same file changed in Ghostlyn and in the repository since the last sync, so the link stopped rather than overwrite either copy. Nothing syncs in either direction until it is settled. An item admin opens its Sync page, checks the listed files and picks Keep repository version or Keep Ghostlyn version. The choice applies to every listed file, including any hidden behind Show more. The other copy is not lost: a replaced Ghostlyn version stays in the item's History, and a replaced repository version stays in git history. A link that diverges with a file marked as too large offers only Keep Ghostlyn version, since Ghostlyn cannot store the repository copy. Keep Ghostlyn version refuses a listed file that is a symlink in the item, since a commit from Ghostlyn cannot carry one, so Keep repository version is the way out there. Force-pushing the branch can also diverge the link, since the last synced commit no longer exists to compare against.
GitHub says the app is not installed right after upgrading to write access
- upgrading switches the connection to a second GitHub App, which starts installed on no repository even when the read-only app already was. GitHub sends you to that app's own installation page right after the upgrade - if the chat retried before that finished, follow the "Repositories" link on the GitHub row to finish installing it, then try again.
Custom skill not visible to teammates - check the skill's Distribution page, or that of the project holding it. Everything starts personal, and only its owner reads it. Sharing it with the organization from Distribution makes it the team's, so every member reads it. An admin can move the scope back to personal from the same page with the Make personal button. Doing so deletes record rows owned by the organization or by other members.
The Slack bot stopped responding - the Slack workspace's bot token could not be renewed, which happens after a database restore, a failed rotation or an uninstall Ghostlyn never heard about. An organization admin opens the organization's Integrations page on the web, where the Slack row reads Needs reconnect, and clicks Reconnect. Reinstalling issues a fresh token and the next message gets an answer.
The Slack bot is silent in a channel - check these in order:
- Ghostlyn has not been invited to the channel. Run
/invite @Ghostlynthere, then mention it again - The message did not mention it. Ghostlyn replies only to a message that mentions it, in a thread it already joined too
- The channel is private or shared with another workspace. Neither works yet, and a shared channel gets one reply saying so
- The workspace was installed before Ghostlyn could read channels. The Slack row on the organization's Integrations page reads Needs reconnect to read channels, and an admin clicks Reconnect
Ghostlyn did not answer in a web channel or a Slack channel - mentioning
@Ghostlyn always gets an answer. A message without the mention gets one only
when all of these hold:
- A reply sits in a thread Ghostlyn already answered in. A thread only people wrote in needs a mention first. In Slack that also means the thread opened with a mention or an earlier unprompted yes
- Nobody asked Ghostlyn to stay out of that thread. Once someone did, it stays quiet there until the next mention brings it back
- In a web direct message, Respond automatically is on in its
…menu. It starts off, and any member of the conversation switches it - A top-level message lands in a channel where Ghostlyn posted within the last 10 days
- Ghostlyn judged the message needs its answer. Thanks, chatter, announcements and a question for a named colleague get none
- The organization has budget left this month. Once it runs out, a thread Ghostlyn answered shows "Your organization's monthly budget is used up." with the reset date, once a month per channel, and a mention gets the same message. An admin asks for a higher organization limit
A web channel shows new messages only after a few seconds - the channel page holds a live connection that shows each new message at once. When that connection drops, the page refreshes every few seconds instead and reconnects within half a minute. A channel that stays slow points at a network, a VPN or a proxy blocking event streams.
No notification arrives for a web channel - check the channel's
Notifications level in its … menu. At Nothing the channel sends no
notification at all, and at Mentions and replies only an @ mention of you or a
reply in a thread you follow does.
The Slack bot says you need an invitation - Ghostlyn does not create an account for everyone in a Slack workspace that installed it. An admin has to invite the email address on the Slack profile from the organization's Members page. Once that invitation exists the next Slack message provisions the account, and accepting the same invitation on the web works too. Sign in with Slack refuses the same person on the login page until the invitation exists.
The Slack bot cannot read an email address - the Slack profile carries no address, so nothing can be matched against an invitation. Add an address to the Slack profile, then message the bot again.
The Slack bot says access has been turned off - an admin deactivated that membership. Ask an admin to invite the address again, which restores access through either door.
I clicked an invitation and nothing happened - the click landed while
already signed in. Signing in first redirects to the accept-invitation screen at
/auth/invitation instead of dropping the invitation; sign in again from the
invitation link, or open Settings > Organization, if the organization already
shows up there the invitation already went through.
I already have an account and cannot join an organization I was invited to
- the invited address already has a Ghostlyn account, so the invitation link sends a signed-out visitor to log in rather than to a signup form, and lands them on the accept-invitation screen afterward. Signing in there as the invited address joins the organization. The "accept your invitation" link the follow-up email sends reaches the same screen, as does opening the invitation link again while signed in as that address.
Connection failed - try disconnecting and reconnecting from Settings > Connections. If it still fails report it as a bug.
Limited permissions on a Connect card or amber icon on a connection - the user ticked fewer permission boxes on the consent screen than the skill requires. In Settings > Connections the row shows an amber warning icon. Disconnect the row, then connect again and approve every permission on the consent screen. In chat, a partial connection still counts as connected and the conversation carries on with the tools those permissions cover. The Connect card reads "Connected with limited permissions", and its Reconnect button asks only for the missing ones. When the user approved none of the service's permissions, the Connect card stays open with a Try again button instead. Google shows one checkbox per permission, so this is usually a box left unticked.
A connected service can read but not write - for example Gmail searches and
reads mail but will not send it. Connecting Gmail starts read only by design,
and Google also shows one checkbox per permission, so a connection can carry
read access alone and still look healthy. Asking for the action puts up an
Allow changes card in chat. Click it and approve the boxes for sending and
organizing mail, or click Allow changes on the Gmail row at Settings >
Connections. Until then the write tools answer with that card rather than
running.
A Google service stops working after connecting a different one - for example Sheets worked until Tasks was connected. Google returns a token covering only the permissions that one authorization asked for. Settings > Connections still shows both services as connected, since the stored permission list keeps the wider set, so only Google knows. The tools answer "Request had insufficient authentication scopes" instead of running. Reconnect the service that broke. Where that breaks the other one in turn, the connection predates the 2026-09-23 fix that carries earlier permissions through each new authorization, and one reconnect after the next deploy repairs every Google service on that account.
Connector shows Setup incomplete or a Retry button - the connection succeeded but post-install setup did not finish, usually because the server was unreachable. Click Retry on the connector's row to re-run setup. The warning clears once setup completes.
An install or skill activation fails on dependencies - what you installed depends on another project, skill, app or connector that is missing, not installed or an MCP connector. The error names the dependency. When the dependency is one you can access, confirm the install prompt and load the original again. When the slug names nothing you can access or names an MCP connector, ask the owner to fix the dependency.
A dependency broke after a rename - dependencies resolve by slug, so a rename leaves every dependent naming the old one. The rename warns first and lists the dependents it can see, but it cannot see a dependent owned by another member. Edit each dependent's dependencies to the new name, or rename it back.
A link to another project, skill, app or connector will not open - the
address is a slug:relpath link into one you do not currently have access to.
Ask whoever owns it to share it with you, from its Sharing or Distribution page.
The link starts working the moment access is granted, with no need to edit or
resend it.
A project, skill, app or connector is missing from the @ picker - the
picker only searches what the current one can reach, the same access check a
link into it would need to resolve. Ask whoever owns the missing one to share
it, from its Sharing or Distribution page.
Credential is restricted to another domain - the stored credential has a domain set and the request went to a different host. Edit the credential in Settings > Credentials to correct the domain, or store a separate credential for the new host.
A skill, app or connector asks to use a key you already have - an installed or shared one reaching for a key you hold under your own membership raises a consent card the first time, naming what is asking, the key and the host it will be sent to. Click Allow to let it use the key going forward, or Skip to leave it declined for now - the card returns the next time it tries. Anything you personally own, such as your Home project, never asks, and neither does a connector such as Gmail reaching the account it exists to connect. See who currently holds consent for a key, and revoke it, from Settings > Credentials.
A confirmation card appeared before a request with my key - the agent read outside content earlier in this turn and now wants to send something with a stored key. Read the host and method on the card. Allow sends it, and the card does not return until the agent reads outside content again.
Agent stopped responding with a limit banner - the monthly usage limit is reached. The banner shows the reset date and an Upgrade button that sends a request to the team. Chatting resumes after the reset date.
My messages disappeared from a long chat - a long chat gets compacted to keep it fast, but the earlier messages still show. Look for an "Earlier messages summarized" divider partway through the transcript - the messages above it are still there, just marked as the point where the model's own view was cut. Nothing was deleted.
A chat vanished from the list - it was probably archived, from a hover icon
on its row or the chat's own … menu. Check the Archived view at
/chats?view=archived, reached from the Archived button beside New chat, or
search for it - an archived chat still turns up in results, marked Archived.
Sending it a new message also brings it back to the default list.
A shared link opens an empty composer - a link of the form
/chats/new?prompt=... uses the old parameter name, which Ghostlyn no longer
reads. The parameter is now q, so resend the link as /chats/new?q=... and
the text lands in the composer again.
Scheduled task not running - check the Tasks page for error messages. Make sure the schedule looks right and try canceling and recreating the task.
A scheduled task sent a message asking me to connect something - a task that runs on its own cannot show a connect card, a key form or a question, since nobody is there to answer one. It stops and sends a message naming what it needs, with a link to connect the account, add or allow the key or approve the step. The Tasks page lists that run as failed. Once the step is done, the task runs as usual at its next time.
A task's channel has no message box - a task posts each run into a channel of its own, and that channel takes no new messages, only replies. Hover over a run and choose Reply in thread, or tap it on a phone, and the reply continues that run. To change what every future run does, choose Open task in the header and edit its Instructions.
Scheduled tasks stopped after a usage limit message - once the monthly usage limit is reached, scheduled tasks are skipped until the reset date. One message arrives the first time a task is skipped that month rather than one per run.
A scheduled, delegated or webhook task stopped at a write - the organization is set to Ask before writes, and nobody is there to answer the confirm card the step needs. The task's owner is told which tool and setting stopped it. An admin switches the organization back to Allow all on the Organization page, or the owner reruns the step themselves to approve it.
A scheduled task stopped at a write the review held - the organization is set to Review writes, and the reviewer judged that nothing in the task's instructions or its skills asked for that write. The owner's message carries the reason. Make the instructions name the action, such as "add each new lead to the CRM", or have an admin set that tool to Always allow on its Tools page. When the message says the reviewer was unavailable, the run stopped because the review could not complete, and the next run tries again.
A webhook task still stops at every write under Review writes - a webhook's body comes from whoever calls the webhook rather than from a member, so its writes are never reviewed and stop as under Ask before writes. The same holds for a background task the agent started and a request from an outside agent. Set the tool to Always allow on its Tools page, or switch the organization to Allow all.
A run script failed with "needs approval under this organization's tool setting" - under Ask before writes a script cannot show the confirm card a write needs, so the call is refused rather than parked. Have the agent call that tool directly, outside the script, so it can raise the card.
The agent says a tool is blocked - someone set it to Blocked on the item's Tools page. When the agent says the organization blocked it, only an organization admin can change it, under For the organization. When it says the member's own settings blocked it, the member resets the row on the same page.
A choice on the Tools page is dimmed - it is looser than what the organization allows, either because an admin set that tool for everyone, which the row says as Set by your organization, or because the organization's Tool approval is Ask before writes. A member can only make a tool stricter.
An outside MCP client got "Refused: … needs approval" - the organization is set to Ask before writes and the client has no way to show the confirm card Ghostlyn would otherwise raise. A send is refused under either setting for the same reason. Switch the organization to Allow all, or call the tool from a chat instead.
A scheduled task sent a message saying it failed - a run that errors, runs out of steps or fails a tool call now notifies too, the same way a run that needs a connection or a key does. The message names the task and links its run on the Tasks page. A task failing the same way again stays quiet until it recovers or fails differently, so one broken schedule sends one message rather than one per run.
A one-off task shows failed after a restart rather than running again - a server restart interrupted it after it had already acted, such as sending a message or editing a file. Ghostlyn does not run it a second time, since that would repeat what it already did. Check the task's chat for what got done and schedule what is left. A task interrupted before it acted runs again on its own.
A task reports it could not send an email or chat message - a scheduled
task, a webhook run and an external invoke call send through Gmail or Google
Chat only to the recipients granted when the task or webhook was created,
confirmed once at that time. A run naming anyone else says what it would have
sent and nothing leaves. Open the task's chat to read the draft text, or ask for
the same message in a normal chat, where it opens a confirmation card instead.
A background run stopped before sending with a stored key - a scheduled task, a webhook run or a background run that read outside content, such as a web page, a search result or a webhook body, cannot then send a write with a stored key or connection, since nobody is there to confirm it. The run stops and tells you what it wanted to send and where. A task keeps this mark until you rewrite its instructions on the Tasks page, since you have then read them. Ask for the same step in a normal chat, where it is sent after you confirm.
A task or background run refused a project - schedule, delegate and
webhooks can only add projects that are switched on in the chat that asks, so a
run never reaches more than that chat could. Turn the project on in the chat
first, then ask again.
Data not showing in tables - check whether you are in your personal organization or a team one. Data is separate between the two. Switch from the sidebar if needed.
A CSV file shows as one wide column in the grid - a quote somewhere in the file was never closed, so every delimiter and line break after it reads as part of one field. Open the Raw text view to find the unterminated quote and fix it.
A CSV file opens with everything in one column - the file is delimited by
something other than a comma, such as a semicolon. The grid only reads a comma
in a .csv file and a tab in a .tsv file, with no detection of anything else.
Use the Raw text view for a file delimited another way.
An edit typed into an open cell did not save - the grid commits a cell on blur, Enter or Tab, not while it is still open. Pressing the save shortcut while a cell is open saves everything except that cell; click or tab out of the cell first, and the next autosave picks it up.
Teammate cannot see records I added - most tables store records per member even in a team organization. Only tables the author marked shared are visible to the whole organization.
A table is missing from Settings > Tables - the list of tables with records lives there, and it only shows a table that already contains at least one record. Ask the agent to add the first record and the table appears.
A deleted row is gone from the Tables page and cannot be re-added - the
agent's remove tool trashes rather than deletes a row, and the trash holds it
for 30 days. Find the remove tool call in the chat and click Revert to bring
it back at its original ID. Past the 30-day window, or on a call already
reverted, Revert fails with a message under the tool call and the row cannot be
recovered.
Delete account is refused as sole admin - the account is the only admin of a team organization that still has members. The dialog names each of those organizations and links to its Members page. Promote another member to Admin there, then try the deletion again.
Leave organization is refused as sole admin - leaving would leave the organization with no admin. With other members present, promote another member to Admin from the Members page and leave afterwards. Alone in the organization, delete the organization instead of leaving it.
A removed Slack member reappears as a new user - removal is an erasure and not a ban. Their next message to the Slack bot provisions a brand-new account with a fresh active membership, holding none of the deleted work. Use Deactivate rather than Remove to block access, since a deactivated member is the one a Slack message cannot bring back.
A service posting to a webhook URL gets an error - the status says why. A
404 means the URL was deleted, replaced or never created, or its owner's
membership is deactivated, so create a new URL on the Tasks page and paste it
into the service. A 429 means the webhook already started 25 runs in the last 24
hours, has five runs waiting to start or the sender is posting faster than 60
requests a minute. The Retry-After header says how many seconds to wait, and
the Tasks page shows runs used today. A 411 means the sender streamed its body
in chunks with no length, which the service refuses, so send a body with a
Content-Length. A 413 means the body was over 64 KB, and nothing is truncated
or queued. A 405 means the request was not a POST to the URL as given.
The agent refuses to upload a file - the turn had already read outside content, such as a web page, so sending a stored file or attachment to a web address is blocked in case that content asked for it. Scheduled runs are covered too. Ask again in a fresh message, where the upload is the first outside call, or use a script, which can download and upload in one run.
Delete button stays greyed out - the confirmation field has to match exactly. Account deletion wants the account's email address, organization deletion wants the organization name, leaving an organization wants its name and removing a member wants that member's email address, all without extra spaces.
An organization disappeared after a teammate left - an organization is removed once no active membership remains, which keeps its Slack bot token and shared credentials from outliving it. Nothing there can be recovered.
A connector says a credential is "restricted to" a host - the stored key's
host differs from the instance the request would reach, such as a solidtime key
saved for app.solidtime.io while the request goes to a self-hosted domain.
Open /settings/credentials and update the Host field to the instance the key
actually belongs to.
Connecting a connector says "This server's public URL setting must start with
https://." - the server is reached over https but advertises itself as http,
so its sign-in addresses would be http too. Fix the server's own public URL
setting. In Metabase that is Site URL under Admin, Settings, General, which must
start with https://. Then connect again.
Connecting says "No Metabase MCP server answered at this address." - the address is wrong, or the service's MCP server is off. Metabase needs version 60 or later with MCP turned on under Admin, AI, MCP, which only its admin can do.
A Metabase chart stays blank in chat - Metabase only lets its charts load
from origins it allows. A Metabase admin adds https://apps.ghostlyn.com under
"Allowed origins for custom MCP clients", and text answers work without it.
A Metabase admin sees one OAuth client per person - each personal Metabase instance registers its own client on the customer's Metabase. An organization admin connecting Metabase once for the organization gives every member one shared instance, while each member still signs in to their own account.
A solidtime summary only shows one person's hours - the stored key belongs
to an employee role, which solidtime limits to that person's own hours. A
manager's own key, held as owner, admin or manager, is what shows every
member's hours.
An hour shows under "No client" that used to show under a client - the project it was logged against has since lost its client, or the person who logged it has left the project. The hours are still real, just unattributed to a client in solidtime's own data.
A plugin's server did not come over on import - a note in the "Imported with notes" toast names the reason: a local-command server, an SSE server, a url carrying a placeholder, more than one placeholder header or a literal header are each skipped rather than imported. Fix the server to a plain Streamable HTTP endpoint with at most one placeholder credential header, then re-import, or add the connector by hand from the Customize page with "Connector".