← ManualLetterA5 palmIn the print dialog choose Save as PDF, margins Default, and turn Background graphics on.
Owner's manual
Cockpit Flight Deck Manual
Muse for Mule.
How to set up, connect and fly Cockpit. Written for an architect who leads a small team and will test with free throwaway accounts before connecting anything real.
What this manual is for, the words it uses, how it is laid out and the rules that keep a first test drive safe.
What this manual is
This is the Cockpit Flight Deck Manual. It works like the owner's manual of a car: you do not read it front to back once and shelve it. You keep it open while you do a job, find the page for that job, follow the steps, and check the result against the lines that say what you should see.
Cockpit is a chat for people who build on Salesforce and MuleSoft. You describe what you want, the Copilot reads the systems you have connected, answers in plain words, and proposes changes that you approve one by one. Muse for Mule.
The manual is written for one reader in particular: an enterprise architect who leads a small team of developers and who will first try Cockpit on free, throwaway accounts before anything real is connected. If that is you, read chapters 1 to 4 in order, then use the rest as a reference.
ADVISORY · The test-drive rule
Connect free, throwaway accounts made with a public Gmail first. Connect real systems only after the test drive has shown you what Cockpit reads, what it asks permission for, and what it never does. Chapter 3 builds those accounts and chapter 6 connects them.
The words this manual uses
Cockpit vocabulary
Word
What it means here
Copilot
The AI that answers in the chat, reads your connected systems with tools, and proposes changes. It works for you; it does not act on its own.
Captain
A team administrator: the person who creates a team, chooses what each member may connect, and can remove members. Only for teams, switched on per customer; see the status of this edition and chapter 9.
Crew
The members of a team. Only for teams, switched on per customer.
Sandbox
The safe mode. Cockpit can read everything you have connected, and nothing can be created, changed, posted, sent or deleted.
Production mode
The mode in which Cockpit can also make changes, but only where a write action exists, and only after you approve each change on an approval card. It says nothing about what kind of org you connected.
Approval card
The box in the chat that shows exactly what a change will do and waits for you to approve or deny it.
Connector
A system you connect to Cockpit: Salesforce, MuleSoft, GitHub, Slack or Postman. Your Google sign-in is listed with them.
How the manual is laid out
Chapter map
Chapter
Use it when you want to
1 Welcome
Learn the words and the conventions.
2 What Cockpit is
Understand the safety model, what is stored, and what the Copilot can and cannot do.
3 Pre-flight
Make the free test accounts.
4 Boarding
Request access, wait for approval, sign in.
5 The controls
Find what every screen and button does.
6 Connecting each system
Connect Salesforce, MuleSoft, GitHub, Slack and Postman.
7 Your first flights
Try the example prompts and judge the answers.
8 Production flight
Understand writes, and use the checklist before approving one.
9 Captain and Crew
Invite people, choose what each may connect, and sign in to a team (only for teams, switched on per customer).
10 Troubleshooting
Look up a message you are seeing.
11 Glossary
Look up a word.
12 Quick reference card
Keep one page next to you.
13 The Workbench
Run SOQL and SOSL, chart results, browse objects and fields, read Apex and MuleSoft logs, and see MuleSoft deployments and APIs, on a page that only reads (arriving).
14 The project board
See your work as cards that move by themselves, and open each project phase when you are ready (beta, switched on for testers).
Appendices
Scopes table, keyboard and platform notes, support contact, the owner's Admin Health view.
Each chapter is a tab. On a screen, the tabs run along the top; in the printed booklet each chapter starts on a new page. The booklet is the same text as the pages, in order, at the print view.
Reading conventions
Numbered steps are things you do, in order. A line that begins "You should see" says what the screen shows when the step worked. If you do not see it, stop and look at chapter 10 before going on.
Checklists have boxes. Tick them on paper, or copy them into your own notes.
Example prompts are shown in a box labelled "Ask the Copilot". Type or paste them into the chat as they are, then change the names to your own.
Figures marked "Screenshot" are placeholders for real captures from the test drive. The list of what to capture is at the end of the manual.
Illustrations are small drawings reproduced from how the product is built. They are labelled "Illustration" and are not screenshots.
Call-outs, from most to least serious
Label
Meaning
WARNING
Something can change data in a system you care about, or cannot be undone. Read it before you act.
CAUTION
Something can waste time or leak a secret if done carelessly.
ADVISORY
Useful background or a recommendation.
TO BE CONFIRMED
A sentence the product owner has not yet confirmed. Do not rely on it until the label is gone.
ARRIVING
A feature that is designed or being built and is not in the product you are using. Nothing marked arriving is promised for a date.
The route in one page
From nothing to a safe first flight
Make the test accounts (chapter 3): a public Gmail, a password manager, two Salesforce Developer Edition orgs, two MuleSoft trials, GitHub, Postman and a Slack workspace.
Request access, wait for approval, sign in (chapter 4). Your 7-day trial starts at your first sign-in.
Check that the chip at the top says Sandbox (chapter 5).
Connect the test accounts one by one (chapter 6), pressing Test on each.
Try the example prompts (chapter 7) and check each answer against the lines that say what to check.
Only when you are comfortable, read chapter 8 before you switch on Production mode, and then only with a checklist in hand.
The setup runbook that this manual grew from estimated about three hours in one sitting for chapters 3 and 6 together. Treat that as an estimate: vendor sign-ups wait on emails and trial activation.
Three rules that keep you safe
Secrets go in the password manager, never in chat, email or a document. That includes passwords, Consumer Secrets, client secrets and API keys.
When a screen says a key is shown once, keep that page open until you have pasted the key where the step says. If you close it, create a new key.
Do every first test in Sandbox. In Sandbox nothing can be changed, even by mistake.
CAUTION
Do not paste real customer data, real credentials or anything from a production system into a test-drive chat. What you type is sent to the AI provider (chapter 2) and kept with the chat.
Status of this edition
This edition describes the product as it is built today. Where something is designed but not shipped, the text says arriving. Where the owner has not yet confirmed a statement, it says to be confirmed.
What is and is not in the product
Feature
Status
Web console in a browser
Available.
Mac app (Apple silicon) and Windows app (Windows 10 or 11, 64-bit)
Available as beta downloads from the Account page and from the chat's top bar.
iPhone and Android apps
Coming. They are not available to download yet.
Attach menu (the plus button beside the chat box)
Arriving. It exists in the build but is switched off for most accounts.
Org Discovery Report
Available where it is switched on for your environment; ask support if you do not see it.
Teams: Captain and Crew
Built. Only for teams, switched on per customer (chapter 9).
Project board
Beta, switched on for testers (chapter 14).
Admin Health view
For the owner only, where switched on (Appendix D).
Writes in Production mode
Switched on in stages, one kind of write at a time (chapter 8). Until a write kind is on for your environment, the Copilot says it has no write action for it.
Vendor screens (Salesforce, MuleSoft, GitHub, Postman, Slack, Google) change often. The vendor steps in chapters 3 and 6 were written from the setup runbook and the vendors' documented flows. Where a vendor screen looks different, follow its prompts and keep to the intent of the step.
Chapter 2
What Cockpit is and the safety model
What Cockpit does, how Sandbox and Production differ, how approval cards work, what is stored, and where your data goes.
What Cockpit is
Cockpit is a chat-first console. You describe an outcome in plain words. The Copilot decides which of your connected systems to read, reads them with a fixed set of tools, and answers with what it found. When a change is needed, it proposes the change as an approval card and waits for you.
You can connect five systems: Salesforce (one or more orgs), MuleSoft (Anypoint Platform), GitHub, Slack and Postman. Your Google sign-in is listed alongside them on the Connectors page. Cockpit runs in a web browser, and as an app for Mac and Windows. Phone apps are coming.
Illustration How a question travels. The Copilot asks your connected systems through tools; the AI provider only sees the words and tool results that Cockpit sends it.
ADVISORY
Cockpit is in private beta. Access is by request and approval (chapter 4), and every account starts with a 7-day trial.
Sandbox and Production
Cockpit has two modes. They describe what Cockpit may do, not what kind of org you connected. A free Developer Edition org can be used in Production mode; a real production org can be used in Sandbox.
Sandbox
Production mode (read + write)
Reading
Everything you have connected.
Everything you have connected.
Changing things
Nothing can be created, changed, posted, sent or deleted. If you ask for a change, the Copilot says so and changes nothing.
A change is possible only where a write action exists, and only after you approve its card.
The chip says
"Sandbox: read-only, nothing can be changed" (on a phone: "Sandbox").
"Production: read + write" (on a phone: "Production").
New accounts
Every new account starts here.
You switch to it yourself, after a confirmation.
Switching back
-
Any time, with no confirmation.
Sandbox: read-only, nothing can be changedProduction: read + write
Illustration The mode chip as the console draws it, in both states. It is in the top bar of the chat and in a slim bar on every other page, so the mode is always in view.
There are three ways to be more careful than the account mode:
Per connector. In Production mode you can turn writes off for one connector at a time (for example, Slack read-only while Salesforce can write). The switches are in the panel under the chip and on the Modes page.
Per chat. A single chat can be made Sandbox from its menu in the Chats panel. That chat stays Sandbox for good: it cannot be switched back, and you start a new chat to write again.
By attaching an org. Attaching a Salesforce org to a chat with the plus button (arriving) makes that chat Sandbox for the same reason.
The strictest setting always wins. The account mode, the chat's mode and what is switched on in the Cockpit deployment are combined, and the result is enforced on the server before any tool is offered to the Copilot. The chip is a view of that setting; it is not what protects you.
ADVISORY
Every credential you connect carries whatever power you gave it. Salesforce, GitHub, Slack and Postman credentials are not narrowed to read-only. It is Cockpit's modes, enforced on the server, that keep Sandbox read-only. That is why chapter 3 asks you to use throwaway accounts first.
Approval cards
Every write waits for an approval card. The card is built from the exact call that will run, not from a summary the AI wrote about it.
⚠ APPROVAL REQUIREDPENDING
Create a Account in Salesforce with Name (Salesforce org Example Dev (example.my.salesforce.com))
tool_writesalesforce_createBlast radius: Writes to Salesforce org Example Dev (example.my.salesforce.com)
ApproveDeny
Illustration The layout of an approval card, reproduced from the console. The values are an example; a real card shows the real call.
Summary. One plain sentence, for example "Create a Account in Salesforce with Name".
Exactly what will run. The complete input, in a box you can scroll. If a change is too large to show in full, it is split into several cards instead of being cut short.
A SHA-256 fingerprint of that input. The approval is bound to it: if the input changed, the approval would not apply.
Where it lands. The card names the Salesforce org (name and address), the Slack workspace, or the GitHub repository and base branch. The approval is bound to that target too. Before the write runs, Cockpit reads the target again. If you moved the chat to another org, reconnected the org to a different address, or the repository's default branch changed, the write is not sent and the answer says why.
Tool name and blast radius. The name of the tool, and a short statement of how far the change reaches.
Approve or Deny. Denying writes nothing.
A card expires after 10 minutes. A late decision is refused and the card shows expired.
If you tighten the mode after a card appears, approving it is refused and nothing is changed.
"Always allow" exists only for plans and reads. It is never offered for a write, so every write needs its own approval.
Your approvals are listed on the Approvals page and under the Approvals tab of the Brain panel.
WARNING
An approval is your decision, not a formality. In Production mode, Approve changes a real system. Chapter 8 has the checklist to use before you press it.
What the Copilot can and cannot do
What the Copilot reads (any mode)
System
What it can read
Salesforce
Records (SOQL), setup metadata (Tooling API), object descriptions and your org's API limits, within a limit of about 40 Salesforce calls per run. It can also explain a debug log you paste, without touching your org.
MuleSoft
Your Anypoint organisation, its environments, what is deployed where, and your API instances with their policies.
GitHub
Repositories you can see, files at a branch or tag, history, pull requests with their files and reviews, checks, Actions runs and issues.
Slack
Channels you are in, the messages in them and thread replies, search, and people's names. Direct messages are a separate choice that Slack asks you for on its own page; you can say no.
Postman
Workspaces, collections and environments of the account the key belongs to.
What it can change, in Production mode only, after your approval
System
The write action
Limits
Salesforce
Create one record, or update one record by its Id.
Plain values only: text, number, true or false, or empty. At most 100 fields in one change.
Slack
Post a message to a channel, as you.
Nothing is posted without a card.
GitHub
Open a pull request.
Cockpit creates a new branch named cockpit/... from the base branch with the files it gives, and opens the pull request. It never pushes to an existing branch and never merges.
Which of these write actions your account actually has depends on what is switched on in the Cockpit deployment you use. They are being switched on in stages: GitHub pull requests first, then Salesforce records, then Slack posts. The Connectors page tells you for each connector: the tag reads "Read + write" when writes are possible and "Read only (no write actions yet)" when the connector has none switched on.
What it does not do
It does not
Detail
Delete records, or change metadata, Apex, flows or permissions
There is no write tool for these in this edition.
Change MuleSoft or Postman
Both are read-only in this edition; they have no write action.
Merge a pull request or push to an existing branch
Opening a pull request on a new branch is the only GitHub write.
Read your Slack direct messages by default
Only after you choose that step, separately.
Retry a write that did not confirm
A write is sent once. If the system did not confirm, the answer says the change may or may not have been applied, and that Cockpit did not try again. Check the system before you ask again.
Act on text it reads inside your systems
Text in a log, a pull request description or a Slack message is treated as data to report, never as an instruction.
Run code tasks on a machine (the Workstation)
Not available in this edition.
What is stored
What
How it is kept
Connection credentials (tokens, secrets, API keys)
Encrypted in Cockpit's vault, separately for each person. Secrets you paste are never shown again. The Connectors page shows only metadata: who the connection is, when it was last used, when it was last tested, the scopes granted.
Chats and what they quote
Your chats and their messages are stored so you can come back to them. If the Copilot quotes a record or a log line from one of your systems, that text is stored with the chat.
Approvals
Each card, your decision, who decided and when, and the fingerprint of the input.
An audit trail
Tool calls, approval decisions, mode changes, and requests that a mode held back. The Modes page shows your recent mode changes and how many requests were held back in the last 30 days.
Usage
Token counts, shown on the Account page.
Access and consent
Your request, your approval, your trial dates, and the date you agreed to the AI provider list.
Deleting a chat removes it from your list at once and for good after 30 days.
Disconnect stops Cockpit using a connection. Its chats are kept, but they cannot read that system again until you reconnect it. What else Disconnect removes depends on the connector, and the confirmation sentence says which: on GitHub and Slack it keeps the app details you saved so you can reconnect in one click; on a MuleSoft connection it removes the saved client id and secret; on Postman it deletes the stored key, and the key still works in Postman until you revoke it there.
Delete, on a connector card, removes the connection and your saved app key and secret as well.
Delete account on the Account page removes your account and everything in it straight away: threads, approvals, connections, usage, devices and AI consent. Cockpit asks each connected tool to revoke its access where the tool allows it. MuleSoft and Postman keys cannot be revoked by Cockpit; it deletes its copy, and you revoke them in Anypoint and Postman. Encrypted backups expire on their normal cycle.
Where your data goes: one AI provider
Cockpit uses one AI provider, Anthropic (Claude). To answer you, Cockpit sends your messages, and the results of the tools the Copilot uses for you, to Anthropic. It does that to produce replies. Before your first chat the console asks you to agree to this, and you can withdraw your agreement at any time on the Account page; chat stops until you agree again. The provider list has a version: if it ever changes, you are asked again.
Your connected systems are contacted by Cockpit's servers, using the credentials in the vault, when the Copilot calls a tool. The AI provider does not log in to your systems; it receives only what Cockpit sends it.
TO BE CONFIRMED · Privacy sentences awaiting the owner
Draft sentence 1: "Anthropic does not use content sent through its API to train its models." Draft sentence 2: "Chat history is kept for 30 days." Neither is confirmed yet. They must be checked against the Anthropic agreement, and it must be decided whether the 30 days describes the AI provider's retention or Cockpit's. Until the owner removes this label, do not rely on either sentence or quote them to your security team.
The privacy policy, in its current published form, is at cockpitai.io/privacy. Where this manual and the policy differ, the policy governs.
CAUTION
Anything you type or paste in a chat goes to the AI provider. Keep real customer data and credentials out of test-drive chats.
Chapter 3
Pre-flight: make your test accounts
Build a set of free, throwaway accounts from a public Gmail, so the first flights touch nothing real.
Why test accounts first
Before Cockpit sees anything of yours, it sees accounts that you made an hour ago and can throw away. You learn what it reads, what it asks permission for and what an approval card looks like, with nothing to lose. This is the test-drive rule.
CAUTION
Use a Gmail address that belongs to the test drive only, not your work address and not your personal one. Do not reuse a password from anywhere. Keep the throwaway accounts separate from your real administrator accounts for the same vendors.
The setup takes about three hours in one sitting if nothing waits on an email. You need a phone for verification codes and a browser in which you are signed in only as yourself. A fresh browser profile is best.
ADVISORY · Written from the runbook
The vendor steps below come from the setup runbook and each vendor's documented flow. Vendors change their screens. If a screen differs, follow its prompts and keep the intent of the step. Cockpit's own screens were checked against the code.
Your accounts sheet
Fill this in as you go. It is the one page you need if you ever have to redo a step. Do not write passwords on it.
Accounts sheet
Tool
Account name or username
Login address
Email used
Done
Gmail (test)
mail.google.com
[ ]
Password manager
[ ]
Cockpit
cockpitai.io
[ ]
Salesforce org 1
login.salesforce.com
[ ]
Salesforce org 2
login.salesforce.com
[ ]
MuleSoft 1
anypoint.mulesoft.com
[ ]
MuleSoft 2
anypoint.mulesoft.com
[ ]
GitHub
github.com
[ ]
Postman
postman.com
[ ]
Slack workspace
[ ]
ADVISORY · A naming pattern
Choose one tidy pattern and keep to it, for example cockpit-dev1 and cockpit-dev2 for the two Salesforce orgs, with the same numbers for MuleSoft. You will thank yourself when the Connectors page lists two of each.
3.1 A public Gmail
This one address does three jobs: it is the email you sign in to Cockpit with, it receives every vendor's verification mail, and, through plus-addressing, it can stand in for several addresses. Mail sent to yourname+sf2@gmail.com arrives in the inbox of yourname@gmail.com.
Open accounts.google.com/signup and create a new Google account. Pick a name that does not identify your employer, for example cockpit.testdrive.yourname.
You should see Your new Gmail inbox opens.
Add a recovery phone number, then turn on 2-Step Verification in the account's Security settings.
You should see Google asks for a code from your phone when you sign in on a new browser.
Write the address on your accounts sheet as the Email used for every row.
ADVISORY
Cockpit signs you in with Google. Sign in to Cockpit later with exactly this address: access is approved for the exact email you give in the request.
3.2 A password manager
1Password, Bitwarden or Apple Passwords all do the job. Every account below gets a strong, unique password saved here, and so does every Consumer Secret, client secret and API key you meet in chapter 6.
Install the password manager and create a separate vault or folder named Cockpit test drive.
You should see An empty vault with that name.
Save the Gmail password and its recovery details in it now, before you go on.
CAUTION
Passwords, keys and secrets go into the password manager, never into chat, email, a document or this manual.
3.3 Two Salesforce Developer Edition orgs
A Developer Edition org is a free, private copy of Salesforce with sample data, made for learning. An org is one such copy. You make two: the first for the main test, the second to prove Cockpit handles more than one. Allow about ten minutes each.
You should see The Developer Edition sign-up form.
Enter your first and last name, your Gmail address, a role (Developer is fine) and a company name (your own or the team's). Give your real country and postal code.
Choose a username. It must look like an email address and must be unique across all of Salesforce, for example yourname.dev1@cockpit-test.org. It does not need to be a real mailbox. Write it on your accounts sheet.
Accept the terms and click Sign me up.
You should see A message that Salesforce has sent you a verification email.
Open the email from Salesforce in your Gmail, click Verify Account, and set a strong password. Save it in the password manager.
Register a way to verify it is you if Salesforce asks (an authenticator app on your phone). It is required.
You should see You land inside Salesforce.
Bookmark the page. Note the address in your browser: it ends in .salesforce.com.
[Screenshot: Salesforce Setup home of a new Developer Edition org]Figure 1
Figure 1. Salesforce Setup home of a new Developer Edition org. Capture details are item 1 in the list of screenshots to capture. Call-outs to draw: 1 Quick Find search box; 2 Address bar ending in .salesforce.com.
Make org 2
Repeat the steps above with the username yourname.dev2@cockpit-test.org. The username must differ from org 1. The email can be the same Gmail; if Salesforce complains or the verification mail does not arrive, use a plus-address such as yourname+sf2@gmail.com.
Check that each org works
In each org, click the gear icon at the top right, then Setup.
You should see A page with a search box called Quick Find opens. If it does, the org works.
ADVISORY · Two things to know
Developer Edition orgs are free but are removed if nobody signs in for a long time, so sign in to each at least once a month. And when Cockpit later asks "Where do you log in to Salesforce?", a Developer Edition org logs in at login.salesforce.com. Cockpit's wording for that choice is "Production (login.salesforce.com)". That names the login address; it has nothing to do with Cockpit's Sandbox and Production modes.
3.4 Two MuleSoft trial accounts
MuleSoft Anypoint Platform is where companies build and run the connections between their systems. You make two free trial accounts. Trials last a limited time, so plan to do the whole test drive within a week of creating them. Allow about ten minutes each.
Fill in your name, email, company and country. Use a different plus-address of your Gmail for each trial.
Verify the email, set a strong password, save it in the password manager, and finish the organisation set-up. Screens change; follow the prompts and keep the defaults.
You should see You are inside Anypoint Platform.
Look at the address bar. anypoint.mulesoft.com is the United States region, eu1.anypoint.mulesoft.com is Europe, and gov.anypoint.mulesoft.com is Government. Write the region on your accounts sheet. You pick the same region in Cockpit later.
[Screenshot: Anypoint Platform home of a new trial account, with the address bar]Figure 2
Figure 2. Anypoint Platform home of a new trial account, with the address bar. Capture details are item 2 in the list of screenshots to capture. Call-outs to draw: 1 Address bar host (shows the region); 2 Organisation name.
Create trial account 2
Repeat with a second plus-address.
You should see A second Anypoint organisation.
The connected app that lets Cockpit read each Anypoint account is made in chapter 6, once Cockpit is open next to it.
3.5 GitHub
GitHub is where software teams keep their code. Cockpit reads code from it and, in Production mode, can propose a change as a pull request, which your team reviews before anything is merged. Allow about five minutes.
Open github.com/signup and create a free account with your Gmail. Pick a username such as yourname-cockpit-test.
You should see A new GitHub account.
Verify the email and turn on two-factor authentication (Settings, then Password and authentication). GitHub requires it for most work.
Create a practice repository: click + at the top right, New repository. Name it cockpit-practice, choose Private, tick Add a README file, and create it.
You should see A private repository with a README. It gives the Copilot something to read.
[Screenshot: The private cockpit-practice repository on GitHub]Figure 3
Figure 3. The private cockpit-practice repository on GitHub. Capture details are item 3 in the list of screenshots to capture. Call-outs to draw: 1 Private badge; 2 README.
3.6 Postman
Postman is a tool for testing and documenting APIs. Postman does not let other apps sign in on your behalf, so Cockpit uses an API key that you create. A Postman key can do everything its owner can do, and Postman cannot limit it to read-only.
WARNING
Use a Postman account made just for this test, never your main one. In Sandbox, Cockpit's modes keep the Copilot to reading, but the key itself is full-power.
Open postman.com and click Sign Up for Free. Use your Gmail, and save the password in the password manager.
You should see A new Postman account.
Create a workspace named Cockpit practice (Workspaces, then Create Workspace, then Personal).
Inside it create a collection named Orders API (New, then Collection), so the Copilot has something to find.
You should see The collection appears in the workspace.
The API key is created in chapter 6, next to Cockpit's page for it.
3.7 Slack
Cockpit connects to Slack through your own Slack app, so for the test drive you make a free workspace of your own. You make the app itself in chapter 6, because it needs a web address that Cockpit shows you.
Open slack.com/get-started and create a new workspace with your Gmail. Name it cockpit-test.
You should see A new, empty Slack workspace.
Create a channel named cockpit-practice and post one sentence in it, so there is something to read.
You should see The channel lists your message.
Write the workspace name on your accounts sheet.
[Screenshot: The new Slack workspace with the cockpit-practice channel]Figure 4
Figure 4. The new Slack workspace with the cockpit-practice channel. Capture details are item 4 in the list of screenshots to capture. Call-outs to draw: 1 Workspace name; 2 #cockpit-practice channel.
Pre-flight checklist
Pre-flight checklist
A test Gmail exists, with 2-Step Verification on.
A password manager holds a vault called Cockpit test drive.
Salesforce org 1 and org 2 exist; Setup opens in each; usernames are on the accounts sheet.
MuleSoft trial 1 and 2 exist; the region of each is on the accounts sheet.
A GitHub account exists with two-factor authentication on, and a private cockpit-practice repository.
A Postman account exists with a Cockpit practice workspace and an Orders API collection.
A Slack workspace exists with a cockpit-practice channel.
No password, key or secret is written anywhere except the password manager.
A calendar reminder is set to revoke the Postman key and the test apps when the test drive ends.
Chapter 4
Boarding
Request access, wait for approval, sign in, understand the 7-day trial, and read the first screen.
The route
1Request accesscockpitai.io/request-access
2Wait for approvalan email: You are in
3Enter Cockpitsign in with Google
4Agree to the AI listbefore your first chat
5Consolechip says Sandbox
Illustration Boarding in five stops. Approval is a person reading your request, so the second stop takes as long as it takes: usually a day or two.
Cockpit is in private beta. Nobody can use it until their email address has been approved, and approval is for the exact address you give. Use the test Gmail from chapter 3 throughout.
4.1 Request access
Open cockpitai.io/request-access. The front page at cockpitai.io also has a Request access link under the Enter Cockpit button.
You should see A page titled Request access with four boxes.
In Email you sign in with, type the test Gmail address. If you are already signed in, the box is filled in and locked to your signed-in address, with the line "You are signed in as ... We approve this exact address."
Fill in Your name, Company and What would you use Cockpit for? In the last box, say plainly that you are doing a test drive with throwaway accounts for an architect-led team. Nothing else is required.
Click Request access.
You should see The page changes to: "Thank you. We have your request and will email you when you are in. Your 7-day Pro trial starts when you first sign in, no card needed."
[Screenshot: The Request access page]Figure 5
Figure 5. The Request access page. Capture details are item 5 in the list of screenshots to capture. Call-outs to draw: 1 Email you sign in with; 2 What would you use Cockpit for?; 3 Request access button.
CAUTION
If the page says "Enter a valid email address.", the address is mistyped. If it says "Could not send that. Please try again in a moment.", wait a minute and send again; nothing was recorded.
4.2 Wait for approval
On the Cockpit side, an administrator reads the request in an Admin page that only administrators see, and approves or declines the exact email address. Approving sends you an email with the subject You are in: welcome to Cockpit. It says to sign in with Google, and that your 7-day Pro trial starts when you first sign in.
If you sign in before you are approved, Cockpit does not let you in. It shows a waiting screen:
[Screenshot: The Waiting for approval screen]Figure 6
Figure 6. The Waiting for approval screen. Capture details are item 6 in the list of screenshots to capture. Call-outs to draw: 1 Waiting for approval pill; 2 Signed-in-as line; 3 Request access button.
A pill reading Waiting for approval.
The sentence "Cockpit is in private beta, so request access and we will email you as soon as you are in."
"You are signed in as ..." with your address.
Three steps: ask for access with the button; requests are reviewed and you are emailed, usually within a day or two; once approved, reopen Cockpit and sign in with the same Google account.
If you sign in with Apple and choose to hide your email, Apple gives Cockpit a relay address that can never match an approved address. The waiting screen then says so. Sign in with the email you were approved under, or add that email to your account and make it your primary one. For the test drive, use Google.
ADVISORY
The waiting screen also offers Delete account, so you can leave without a trace at any point, approved or not.
4.3 Sign in
When the approval email arrives, open cockpitai.io and click Enter Cockpit.
You should see A sign-in page with the Cockpit mark and one or two buttons: Google, and Apple where it is switched on. There is no email or password box.
Choose Google and sign in with the test Gmail you were approved under.
You should see After a moment the words "Opening Cockpit..." appear, then the console.
If this is your first sign-in, a dialog titled Before your first chat appears when you send your first message. See the next section.
[Screenshot: The sign-in page]Figure 7
Figure 7. The sign-in page. Capture details are item 7 in the list of screenshots to capture. Call-outs to draw: 1 Google button.
ADVISORY · The desktop apps
In the Mac and Windows apps, Enter Cockpit opens your browser to sign in with Google, then hands you back to the app. On the Mac, the first time you open the app, macOS asks whether to open an app downloaded from the internet: click Open. Chapter 5 covers downloading the apps.
ARRIVING · Sign in to a team
Only for teams, switched on per customer. On a build with Teams switched on, a quiet line under the Google button reads Sign in to a team. It opens a door with an email and password form for people a Captain invited. If your sign-in page has no such line, ignore this: you sign in with Google as above. See chapter 9.
4.4 Your 7-day trial
The trial starts the first time you sign in, not when you request access or when you are approved. No card is asked for. A bar at the top of the console counts it down.
During the trial: "Pro trial: N days left. No card needed."
After it: "Your 7-day Pro trial has ended. You can still read everything." Cockpit becomes read-only: you can read everything, but you cannot start chats, decide approvals or change connections. The bar offers Join the waitlist for paid; online payment is not available.
An administrator can extend or end a trial.
ADVISORY
Plan the test drive to fit inside the seven days. The MuleSoft trials are time-limited too, so make the accounts in chapter 3 shortly before you start.
4.5 Agreeing to the AI provider
Before your first chat, Cockpit asks you once to agree to your messages, and the results of the tools the Copilot uses for you, being sent to its AI provider. The dialog is titled Before your first chat. It names the provider, Anthropic (Claude), and what it does with the data: it answers every chat message and writes the code and configuration your chats ask for.
[Screenshot: The Before your first chat dialog]Figure 8
Figure 8. The Before your first chat dialog. Capture details are item 8 in the list of screenshots to capture. Call-outs to draw: 1 Provider name and purpose; 2 Not now; 3 Agree.
Agree records your agreement and sends the message you were writing.
Not now closes the dialog. Chat stays off; the message box shows "Chat is off until you agree to Cockpit sending your messages to its AI providers." with a Review and agree link.
You can withdraw at any time under AI processing on the Account page. Chat stops until you agree again, and your chats stay.
ADVISORY
Chapter 2 explains where the data goes. The provider list has a version: if it changes, Cockpit asks you again.
4.6 Your first screen
After you sign in the console opens on the chat. This is what is on it. Chapter 5 describes every control in turn.
[Screenshot: The console on first sign-in]Figure 9
Figure 9. The console on first sign-in. Capture details are item 9 in the list of screenshots to capture. Call-outs to draw: 1 Rail; 2 Trial bar; 3 Chats button; 4 Mode chip showing Sandbox; 5 Brain button; 6 Org picker; 7 Message box and microphone.
Where
What
What to check on your first visit
Far left (bottom bar on a phone)
The rail: Console, Search chats, Approvals, Connectors, Account, and your profile menu.
Five icons, with an extra Admin icon only for administrators.
Top bar, left
Chats button, and a chip showing the connected org, or "No org connected".
"No org connected" is right: you have not connected anything yet.
Top bar, right
A Download for Mac or Download for Windows button, the mode chip, and the Brain button.
The mode chip says Sandbox.
Above the message box
A picker for the Salesforce org or MuleSoft connection this chat will use.
"No Salesforce org connected. Connect one."
Bottom
The message box: "Describe the outcome you want...", a microphone, and a send button.
The line beneath it: "Every write the Copilot proposes waits for your approval. Nothing ships without you."
WARNING · Check the chip before anything else
The mode chip must say Sandbox ("Sandbox: read-only, nothing can be changed"). New accounts start in Sandbox, so it should. If it says Production, stop and open the chip to switch back, before you connect anything.
Boarding checklist
Boarding checklist
Access requested with the test Gmail address.
The approval email arrived (subject: You are in: welcome to Cockpit).
Signed in with Google, with the same address.
The 7-day trial bar shows days left, and no card was asked for.
I agreed to the AI provider list (or I know where to do it).
The mode chip says Sandbox.
The Connectors page opens with a Salesforce card and a MuleSoft card at the top and the Connected and Available tabs below. Nothing of yours is connected yet.
Chapter 5
The controls
Every screen and control in the console: the rail, the chat, the mode chip, Connectors, Approvals, Account, the microphone, the attach menu, and the desktop and phone apps.
5.1 The rail
The rail runs down the left edge and stays in view on every page. On a phone (480 px wide or narrower) it becomes a bar along the bottom. Each icon has its name as a tooltip and as its accessible label.
Console
Search chats
Approvals
Connectors
Account
Your profile menu
Illustration The rail, top to bottom, with the icons the console draws.
Icon
Goes to
Notes
Console
The chat.
The Cockpit mark above the icons also goes there.
Search chats
Opens the Chats panel with the search box ready.
On the chat page it opens the panel in place; elsewhere it goes to the chat first.
Approvals
The Approvals page (5.6).
Connectors
The Connectors page (5.5).
A small red dot means at least one connection needs reconnecting.
Workbench
The Workbench (chapter 13).
Only where it is switched on.
Board
The project board (chapter 14).
Beta, switched on for testers.
Account
The Account page (5.7).
The Modes page and the Workstation page sit under it.
Admin
The administrators' page.
Shown only to administrators: access requests, trials and usage.
Profile menu
Your name, account management and Sign out.
At the bottom of the rail.
The Connectors, Approvals, Modes and Account pages also show a settings list at their left (a row of links on a narrow screen). Modes is reached from that list, from the Account page, or from the chip's panel. In a team, a Team entry is in that list too (chapter 9).
5.2 The chat
The chat is where you work. From top to bottom, left to right:
Control
What it does
Chats button (top left)
Opens the Chats panel: your list of chats with a search box and a New thread button.
Org chip
Shows which org or connection this chat uses, for example "Salesforce: Acme Dev (sandbox)", or "No org connected".
Download for Mac / Windows
A button for your own computer's app. It does not appear inside the apps, on phones, or on other systems. See 5.10.
Mode chip
Shows Sandbox or Production. Opens the mode panel (5.4).
Brain button
Opens the Brain panel (5.3). A number beside it counts the steps Cockpit has run.
Org picker (above the message box)
Appears on a new chat before it has started. Pick the Salesforce org, or the MuleSoft connection, this chat will use. If you have none, it says "No Salesforce org connected" with a link to connect one.
API meter (above the message box)
A line such as "API calls this run: 4 of 40 · org allowance left: 94,210" with a small bar. It appears after a tool result reports the numbers, so it is hidden until Cockpit has asked your org something. The 40 is the cap on Salesforce calls in one run.
Message box
"Describe the outcome you want...". Enter sends. Shift and Enter start a new line.
Microphone
Dictation. See 5.8.
Send (the up arrow)
Sends the message. It is disabled while a reply is being written, if Cockpit is unreachable, if the box is empty, and after your trial has ended.
+Describe the outcome you want…
Illustration The message box. The plus button on the left is the attach menu, which is arriving (5.9).
Under the box, one line repeats the safety promise: "Every write the Copilot proposes waits for your approval. Nothing ships without you."
A banner at the top of a chat says when Sandbox is on: "Sandbox is on: Cockpit can read your connected systems but nothing can be changed. If you ask for a change, it will say so and change nothing." If only that chat has been made Sandbox, the banner says that chat stays Sandbox.
While the Copilot works, you see its steps stream into the chat. If your connection drops during a run, the console reconnects to the run by itself with growing pauses, so a deploy or a network blip does not lose the answer.
ADVISORY · Slash command
Typing /discovery and pressing Enter runs the Org Discovery Report on the chat's org (or the org you picked). No AI model is involved in running it, so it does not need the AI consent. See chapter 7.
5.3 The Chats panel and the Brain panel
[Screenshot: The Chats panel with a few chats]Figure 10
Figure 10. The Chats panel with a few chats. Capture details are item 10 in the list of screenshots to capture. Call-outs to draw: 1 New thread; 2 Search chats; 3 Sandbox tag; 4 Options menu.
New thread starts a chat. Search chats finds earlier ones by their words.
Each chat has an Options menu with Rename, Delete, and Make this chat sandbox. After you use the last, the menu reads "This chat is Sandbox" and the chat carries a green Sandbox tag. A chat can only be tightened this way, never loosened.
An amber dot beside a chat means it is waiting for your approval.
Delete asks first. The chat leaves your list at once and is removed for good after 30 days.
Under 900 px wide, the Chats and Brain panels open as drawers over the conversation. Escape closes a drawer.
[Screenshot: The Brain panel on the Activity tab]Figure 11
Figure 11. The Brain panel on the Activity tab. Capture details are item 11 in the list of screenshots to capture. Call-outs to draw: 1 Tabs: Activity, Approvals, History, Settings; 2 A tool line; 3 API usage; 4 Read-only badge.
The Brain panel says who is working and what it did. It has four tabs:
Tab
What it shows
Activity
One line per tool Cockpit ran for you, with a time. Empty until something is read.
Approvals
How many approvals are waiting on you in this thread, and a link to the Approvals page.
History
Plans and approvals for this thread.
Settings
Links to Connectors and Account.
The panel also shows API usage for your Salesforce org ("No Salesforce API calls in this thread yet" until one is made) and a Safety badge: "Read-only" with "Sandbox is on: nothing can be changed.", or "Read + write" with "Production mode (read + write): every change asks for your approval first."
5.4 The mode chip, the mode panel and the Modes page
Sandbox: read-only, nothing can be changedProduction: read + write
Illustration The mode chip in both states. Wide windows show the long wording; a phone shows Sandbox or Production only.
Click the chip to open the mode panel. It has a master switch and a row for each connector.
[Screenshot: The mode panel opened from the chip]Figure 12
Figure 12. The mode panel opened from the chip. Capture details are item 12 in the list of screenshots to capture. Call-outs to draw: 1 Master switch; 2 A connector row; 3 Mode settings link.
Production mode (read + write) is the master switch. Turning it on asks you to confirm: "Switch to Production mode (read + write)?" The confirmation says Cockpit will be able to make changes where a write action exists, that every change still asks for your approval, that the mode does not describe what kind of org is connected, and that you can switch back to Sandbox at any time with no confirmation. The buttons are Switch to Production mode and Stay in Sandbox.
Per connector rows (Salesforce, MuleSoft, Slack, GitHub, Postman, Workstation) show, in Sandbox, "read only in Sandbox". In Production mode, each shows "can write, each write asks for approval" with a switch you can turn off, which changes it to "read only (you switched writes off)". A connector with no write action shows "read only (no write actions yet)" and its switch is locked.
The Modes page has the same switches, a note that a new chat follows the account mode, a count of requests held back by a mode in the last 30 days ("These are not errors: nothing was changed."), and a list of recent mode changes with times.
ADVISORY
Every Connectors card carries a small tag that tells you what Cockpit can do with it right now: "Read only (Sandbox)", "Read + write", "Read only (writes off)" or "Read only (no write actions yet)". It describes Cockpit, never the connected org.
5.5 Connectors
Open Connectors from the rail. The page explains that you have one connection per platform, except Salesforce and MuleSoft, where you can connect several and pick one for each chat. Google is how you signed in.
[Screenshot: The Connectors page before anything is connected]Figure 13
Figure 13. The Connectors page before anything is connected. Capture details are item 13 in the list of screenshots to capture. Call-outs to draw: 1 Settings list at the left; 2 Search; 3 Connected and Available tabs; 4 Salesforce card; 5 A Connect button.
A Search box filters by name.
Two tabs, Connected and Available, with counts. The page opens on Available until something is connected.
The Salesforce and MuleSoft cards sit above the tabs, because each can hold several connections.
Each other connector is a row. Click its name to open its detail: Identity (who the connection is), Health (status, last test, connected since, last used, token expiry, last error) and App (which app, the saved key and whether a secret is saved, and the scopes, summarised as "N permissions (show all)").
A row shows connected or not connected, its capability tag, and a Connect button when it is not connected.
A connected row has Test, Reconnect, Disconnect and, for connectors you connect with your own app or key, Delete. Test makes one real read-only call and reports "Test passed" or "Test failed" with a reason. Each of Disconnect and Delete asks you to confirm.
The Salesforce card lists every org you connected, each with its name, org-type chip, a health label (Working, Needs reconnect, or Not checked yet), when it was connected and last used, and buttons:
[Screenshot: The Salesforce card with a connected org]Figure 14
Figure 14. The Salesforce card with a connected org. Capture details are item 14 in the list of screenshots to capture. Call-outs to draw: 1 Add Salesforce org; 2 Org name and type chip; 3 Health label; 4 Rename, Reconnect, Disconnect.
Add Salesforce org opens the four-step guide of chapter 6. Setup guide opens the same guide.
Rename gives an org a name you recognise (up to 120 characters).
Reconnect replaces that org's sign-in. Disconnect keeps the org's chats but they cannot read it until you reconnect.
Run discovery report (where switched on) reads the org once and writes the Org Discovery Report into a chat. Hovering it says "Reads this org and writes a report. It changes nothing in Salesforce." The finished report can be downloaded as Markdown (.md) or as its tables in CSV.
The MuleSoft card works the same way, with Add MuleSoft connector, and shows the region and organisation of each connection. A red notice at the top of a card with "Needs reconnect" means the provider refused the saved sign-in.
ADVISORY
When you come back from connecting a system, the page tells you what happened in one line (for example "GitHub is connected.") and opens that card. Chapter 10 lists the messages for when it did not work.
5.6 Approvals
The Approvals page lists every approval card waiting across all your chats, grouped by chat, newest first, with a Refresh button. It says: "Every write the Copilot proposes waits here. Nothing ships without you." When nothing is pending it shows "All clear" and "No pending approvals." with a link back to the console.
[Screenshot: The Approvals page with nothing pending]Figure 15
Figure 15. The Approvals page with nothing pending. Capture details are item 15 in the list of screenshots to capture. Call-outs to draw: 1 Refresh; 2 All clear message.
Each card has the layout shown in chapter 2: summary, exactly what will run, fingerprint, tags and the target. Approve and Deny decide it. A decided card shows who decided and when. After your trial has ended, both buttons are disabled and a line says so.
ADVISORY
Only a card still waiting appears here; decided cards remain in the chat they came from and in the Approvals tab of the Brain panel.
5.7 Account
[Screenshot: The Account page]Figure 16
Figure 16. The Account page. Capture details are item 16 in the list of screenshots to capture. Call-outs to draw: 1 Sign out; 2 Standing approvals; 3 AI processing; 4 Downloads; 5 Usage; 6 Delete account.
Section
What it holds
Identity
Your name, email and avatar, and a Sign out button.
Connections
A link to Connectors.
Modes
A link: "Sandbox and Production".
Standing approvals
Tools you chose to "Always allow", each with a Revoke. It says "None. Cockpit asks for your approval every time." until you allow one. Standing approval is offered only for plans and reads, never for writes.
AI processing
The provider list you agreed to, a link to the privacy policy, and Withdraw consent.
Cockpit app
A link to open the app, where that is available, or to get it.
Downloads
Cockpit for Mac and Cockpit for Windows (5.10).
Usage
Input tokens and Output tokens, totals for your account.
Delete account
Deletes your account and everything in it, after you type the confirmation word. It cannot be undone.
5.8 The microphone
The microphone beside the send button dictates into the message box, using your browser's or phone's own speech recognition. Cockpit's servers do not do the speech recognition. The button is hidden where the browser has none.
Click the microphone. Allow the microphone for this site if your browser asks.
You should see The button changes to Stop listening, and a note says "Listening... tap the microphone again when you are done."
Speak, then click the microphone again.
You should see Your words are added after anything already in the box, with a space between. Nothing is sent: you read it, then press Send.
[Screenshot: The message box while the microphone is listening]Figure 17
Figure 17. The message box while the microphone is listening. Capture details are item 17 in the list of screenshots to capture. Call-outs to draw: 1 Microphone button (listening); 2 Listening note.
Message
Meaning
Cockpit cannot use the microphone. Allow it for this site in your browser or phone settings, then try again.
Permission was refused. Change it in the browser's site settings.
I did not hear anything. Try again, closer to the phone.
Nothing was recognised.
Voice input is not working right now. You can still type.
The browser's recognition failed. Type instead.
CAUTION
Check dictated names and Ids before you send. Speech recognition mishears record names, and an approval later depends on the exact text.
5.9 The attach menu (arriving)
ARRIVING
The plus button beside the message box is built but switched off for most accounts. If your message box has no plus, that is expected. What follows describes it so that you know what is coming.
Plus opens a small menu: Salesforce org (with a count such as "2 connected"), or Connect something new.... With no org connected, the first entry reads Connect a Salesforce org.
Choosing Salesforce org opens a sheet, Attach a Salesforce org: pick the org, give it a short name (lower-case letters, digits and dashes, up to 24 characters, starting with a letter or digit; suggestions are dev, qa and uat for a sandbox and prod for Production), and press Attach.
The sheet shows Access as Read only; "Read and write" is greyed out with the note "Writing through an attached org comes later. For now it is read only."
A chat can have up to 4 orgs attached. They appear as chips such as "dev · Salesforce · read only", each with a Detach button, and you can then ask the Copilot to compare them by name.
WARNING
Attaching an org makes the chat Sandbox, and a chat never goes back. The sheet warns you: "Attaching makes this chat read only. It stays read only, so start a new chat if you need to change something."
5.10 The desktop apps
Cockpit for Mac and Cockpit for Windows are the same console in a window of its own. They are beta downloads. The download buttons appear for approved accounts only, on the Account page and in the chat's top bar, and not inside the apps.
[Screenshot: The Mac and Windows download cards]Figure 18
Figure 18. The Mac and Windows download cards. Capture details are item 18 in the list of screenshots to capture. Call-outs to draw: 1 Download button; 2 Install steps.
Mac
Windows
System
Apple silicon.
Windows 10 or 11, 64-bit.
Button
Download for Mac.
Download for Windows.
Install
Open the downloaded DMG and drag Cockpit to Applications. Open it from Applications; the first time, macOS asks whether to open an app downloaded from the internet: click Open.
Run the downloaded installer. It installs just for you and does not ask for an administrator password. Open Cockpit from the Start menu or the desktop shortcut.
Sign in
Click Enter Cockpit. Your browser signs you in with Google and hands you back to the app.
The same hand-off, through the cockpit:// address.
The card for your own system comes first with the main button; the other follows as a second choice.
Use the Cockpit menu
In the app, open the Cockpit menu in the menu bar. On Windows the bar is hidden until you press Alt.
You should see New chat, Connections, Workbench and Approvals, each with its shortcut. The same menu is in the Mac and Windows apps.
Choose an entry, or press its shortcut.
You should see New chat starts a chat. The others open that page in the app's window.
[Screenshot: The Cockpit menu of the desktop app]Figure 19
Figure 19. The Cockpit menu of the desktop app. Capture details are item 19 in the list of screenshots to capture. Call-outs to draw: 1 New chat; 2 Connections, Workbench, Approvals; 3 Shortcuts.
Desktop shortcuts
Mac
Windows
To
Command + N
Ctrl + N
New chat
Command + Shift + C
Ctrl + Shift + C
Connections
Command + Shift + B
Ctrl + Shift + B
Workbench
Command + Shift + A
Ctrl + Shift + A
Approvals
The menu bar also has the usual Edit, View and Window menus, and a Help menu with Cockpit Manual (opens this manual in the app), Check for Updates and Copy Diagnostics. The zoom, reload and close keys are the ones every app uses. Check for Updates tells you only when a newer version exists; it never installs anything. Where update checks are not switched on, it opens the Cockpit website instead.
Copy Diagnostics for support
Choose Help, then Copy Diagnostics.
You should see A message: "Diagnostics copied. App, system and service versions are on your clipboard. They contain no account details."
Paste into your message to support (Appendix C).
[Screenshot: The Diagnostics copied message in the desktop app]Figure 20
Figure 20. The Diagnostics copied message in the desktop app. Capture details are item 20 in the list of screenshots to capture. Call-outs to draw: 1 Help menu entry; 2 Diagnostics copied message.
It contains
It does not contain
The app version, and whether it is installed.
Your name, email or account.
Your system and its version and type, and the versions of Electron, Chromium and Node the app is built on.
Any token, password, key or sign-in ticket.
The website host the app talks to (only the host name).
Any page address, path or query, chat text or connection.
The version of the Cockpit website and the Brain service, as they report themselves, and the time.
Anything you have connected or approved.
A line reads "unknown" when it could not be found, for example the service versions when you are offline.
If Cockpit cannot be reached
Open the app with no internet, or lose the connection while it is open.
You should see A plain screen: "Cockpit can't be reached. Check your internet connection. Cockpit will try again by itself." with a Try again now link.
Reconnect, or press Try again now.
You should see Cockpit opens as before. Automatic tries come 5 seconds apart at first and then further apart, up to once a minute.
[Screenshot: The Cockpit can't be reached screen in the desktop app]Figure 21
Figure 21. The Cockpit can't be reached screen in the desktop app. Capture details are item 21 in the list of screenshots to capture. Call-outs to draw: 1 Heading; 2 Try again now link.
If the page itself stops working, the app reloads it, up to three times in a minute, and then leaves you on that screen. The app also remembers its window size and place, and reopens in them; if a screen has been unplugged it opens on one that is there. The window cannot be made smaller than 900 by 600.
ADVISORY
Two extras in the apps are switched off unless switched on for you: a count of waiting approvals in the window title, with one notice when a new one arrives, and the update check. Do not expect them unless support told you they are on.
ADVISORY
The Windows installer is signed. The Windows card would carry a SmartScreen note ("click More info then Run anyway") only for an unsigned build; the current build shows none.
5.11 Phones
ARRIVING
iPhone and Android apps are coming. They are not available to download. Until then, the console works in a phone's browser: the rail becomes a bottom bar, the Chats and Brain panels become drawers, and controls are at least 44 px tall.
[Screenshot: The console on a phone-width screen]Figure 22
Figure 22. The console on a phone-width screen. Capture details are item 22 in the list of screenshots to capture. Call-outs to draw: 1 Bottom rail; 2 Short mode chip; 3 Message box.
Controls checklist
Controls checklist
I can find the mode chip on the chat and on the Connectors page.
I opened the Chats panel and the Brain panel and know what each shows.
I know where the Approvals page, the Modes page and the Account page are.
I tried the microphone, or I know it is optional.
I know the plus button is arriving and may not be on my screen.
Chapter 6
Connecting each system
Connect Salesforce, MuleSoft, GitHub, Slack and Postman, test-drive accounts first, then the notes for real systems.
Before you connect anything
Do this chapter in two passes. Pass one connects the throwaway accounts from chapter 3. Pass two, only after the test drive, covers what changes when the systems are real; it is at the end of the chapter.
Before connecting checklist
You are signed in to Cockpit and the mode chip says Sandbox.
The password manager is open, with the Cockpit test drive vault ready for each key and secret.
You are signed in to each vendor's website as the test account in a browser profile that holds nothing else.
You have two tabs open: Cockpit's Connectors page, and the vendor.
ADVISORY
Every connector's connect page shows a value you must copy exactly (a callback or redirect URL). Copy it from Cockpit's page each time. Do not type it, and do not reuse one from an earlier environment: Cockpit shows the address that belongs to the console you are using.
How each system connects
System
Door
You create
You paste into Cockpit
Salesforce
Your own External Client App, sign-in with PKCE
An External Client App in each org
Consumer Key (and Secret, if the app has one)
MuleSoft
Your own connected app, client credentials
A connected app in Anypoint
Client id and client secret
GitHub
Cockpit's GitHub sign-in
Nothing
Nothing
Slack
Your own Slack app, sign-in
A Slack app in your workspace
Client id and client secret
Postman
An API key
A key in Postman
The key
6.1 Salesforce
Salesforce only lets an outside program in through an app that you create and control. Salesforce calls it an External Client App. You make one per org, copy its Consumer Key (and Secret) into Cockpit, and Cockpit sends you to Salesforce to sign in and approve. You decide the permissions. Do this once for org 1, then once for org 2; allow about ten minutes each.
In Cockpit
Open Connectors, find the Salesforce card and click Add Salesforce org.
You should see A guided page with four numbered steps.
Step 1. Where do you log in to Salesforce? Choose Production (login.salesforce.com) for a Developer Edition org. The other choices are Sandbox (test.salesforce.com) and My own domain (type an address like your-company.my.salesforce.com).
Caution This names the login address only. It is not Cockpit's Sandbox or Production mode.
Step 2. Copy the Callback URL and the Scopes boxes. Leave this tab open.
You should see The Scopes box reads: api refresh_token.
[Screenshot: The four-step Salesforce guide in Cockpit]Figure 23
Figure 23. The four-step Salesforce guide in Cockpit. Capture details are item 23 in the list of screenshots to capture. Call-outs to draw: 1 Org type choice; 2 Callback URL; 3 Scopes box reading api refresh_token; 4 Step 4 button.
In Salesforce (second tab, signed in to org 1)
Click the gear icon, then Setup. In Quick Find type External Client App Manager and open it. Click New External Client App.
You should see A form for a new external client app.
Name it Cockpit and enter your email as the contact.
Under OAuth Settings, tick Enable OAuth and paste the Callback URL you copied.
Add exactly two scopes: Manage user data via APIs (api) and Perform requests at any time (refresh_token, offline_access). Cockpit's own list is api and refresh_token; the second Salesforce label is how Salesforce names that scope.
Caution Add no other scopes.
Tick Require Proof Key for Code Exchange (PKCE) and the authorization code flow. Leave every other flow off.
Click Create. Wait about two minutes: Salesforce needs a moment to switch the app on.
Open the app, then Settings, then OAuth Settings, and click Consumer Key and Secret. Copy both into the password manager.
You should see Two long codes.
[Screenshot: The External Client App's OAuth settings in Salesforce]Figure 24
Figure 24. The External Client App's OAuth settings in Salesforce. Capture details are item 24 in the list of screenshots to capture. Call-outs to draw: 1 Callback URL; 2 The two scopes; 3 PKCE option.
Back in Cockpit
Step 3. Paste the Consumer Key. Paste the Consumer Secret too if your app has one; the box says it is optional if the app uses PKCE only. The secret is encrypted and never shown again.
Step 4. Click Step 4. Sign in and approve. A Salesforce page asks you to allow Cockpit. Click Allow.
You should see You return to Connectors, a line says Salesforce is connected, and the card lists your org with its name, an org-type chip and the health label Working or Not checked yet.
Repeat the whole procedure for org 2 with Add Salesforce org.
You should see Two orgs on the card. Each chat now lets you pick one.
Prove it: start a chat, pick the org, and ask the first prompt in chapter 7 ("How close is this org to its API limits?"). A real number means the connection works.
ADVISORY
Rename each org on its card to something you will recognise, such as dev1 and dev2. The names appear in the org chip and in approval cards.
CAUTION
Salesforce says "redirect_uri_mismatch"? The callback in the app differs from the one in Cockpit's step 2. Copy it again with no spaces and save the app. "invalid client"? Wait two minutes after creating the app, then copy the key again. An approval error after sign-in? In the app's policies, let all users self-authorize, or approve your user, then retry. Chapter 10 has the full list.
6.2 MuleSoft
Cockpit reads your Anypoint organisation through a connected app that you create and that acts on its own behalf (client credentials). Cockpit only reads from Anypoint, so the app gets read-only scopes. Do this once for each trial account.
In Cockpit, open Connectors and click Add MuleSoft connector on the MuleSoft card.
You should see A guided page with five steps: region, create the app, choose read-only permissions, paste the client id and secret, test.
Pick your Anypoint region: United States, Europe or Government. Use the region you wrote down from the address bar in chapter 3.
In Anypoint (signed in as that trial), open the menu, then Access Management, then Connected Apps, then Create app.
Name it Cockpit. Choose the type App that acts on its own behalf (client credentials). Do not choose the other types: they need a person to sign in and will not work here.
Add only scopes that start with View or Read: View Organization, View Environment, Read Applications and View APIs Configuration. When Anypoint asks which business group and environments a scope applies to, choose every environment you want Cockpit to see. Save.
Caution Never add Create, Edit, Delete, Deploy or Manage.
Anypoint shows the client id and client secret once. Keep that page open. Copy both into the password manager.
In Cockpit, paste both, optionally give the connection a name, and save. They are encrypted and never shown again.
Press Test.
You should see "Anypoint accepted the credentials ... Cockpit can read this organisation." Then the organisation's name and its environments, for example Sandbox and Production. Nothing is changed.
[Screenshot: The Cockpit connected app's scopes in Anypoint]Figure 25
Figure 25. The Cockpit connected app's scopes in Anypoint. Capture details are item 25 in the list of screenshots to capture. Call-outs to draw: 1 App type; 2 The four read scopes; 3 Environments chosen.
Repeat for the second trial. Cockpit lets you pick which Anypoint organisation each chat uses. If Test fails with 401 or 403, the region, the app type or the scopes are wrong: recreate the app as client credentials with the four scopes.
6.3 GitHub
GitHub connects through Cockpit's own GitHub sign-in, so you create nothing. It asks for GitHub's standard repo access (and read:user). GitHub offers no read-only version of repo for private repositories, so GitHub describes it as read and write. What keeps Cockpit to reading is its mode, not the sign-in.
In Cockpit, open Connectors, find GitHub and click Connect.
You should see A guide page explaining what Cockpit reads (repositories, code, history, pull requests, checks, Actions runs, issues) and what the sign-in grants.
Click Connect GitHub. GitHub asks whether to let Cockpit access your account. Check that you are signed in as the test account, read the request, and click Authorize.
You should see You return to Connectors and GitHub says connected, with your login.
Press Test.
You should see "GitHub accepted the sign-in (your login) ... can read your repositories."
[Screenshot: GitHub asking to authorize Cockpit]Figure 26
Figure 26. GitHub asking to authorize Cockpit. Capture details are item 26 in the list of screenshots to capture. Call-outs to draw: 1 Signed-in account; 2 Requested access; 3 Authorize button.
ADVISORY · Taking it back
Disconnect in Cockpit stops Cockpit using the sign-in at once. To also revoke the access at GitHub, open GitHub Settings, then Applications, then Authorized OAuth Apps, find Cockpit and press Revoke.
6.4 Slack
Slack connects through your own Slack app in your workspace, so you control the permissions. Cockpit connects as you (a user token), so it can read what you can see and search it. It reads channels only; direct messages are a separate, optional consent that you can decline. Allow about fifteen minutes.
In Cockpit
Open Connectors, find Slack and click Connect. On the guide, click Connect Slack. With no app saved yet, it opens the page that saves your app.
You should see A page showing a Redirect URL, a list of scopes and boxes for Client id and Client secret.
Copy the Redirect URL. Leave this tab open.
In Slack (signed in to your test workspace)
Open api.slack.com/apps, choose Create New App, then From scratch. Name it Cockpit and pick your test workspace.
You should see The app's settings page.
Under OAuth & Permissions, add the Redirect URL you copied, and save it.
Add these User Token Scopes: channels:read, groups:read, channels:history, groups:history, search:read, users:read and chat:write. Also add the three Bot Token Scopes that Cockpit's page lists: channels:read, chat:write and users:read.
Under Basic Information, find App Credentials. Copy the Client ID and Client Secret into the password manager.
You should see Two values.
[Screenshot: The Slack app's OAuth and Permissions page]Figure 27
Figure 27. The Slack app's OAuth and Permissions page. Capture details are item 27 in the list of screenshots to capture. Call-outs to draw: 1 Redirect URL; 2 User Token Scopes; 3 Bot Token Scopes.
Back in Cockpit
Paste the Client id and Client secret and click Connect Slack. The secret is encrypted and never shown again.
Slack asks to let your app into the workspace. Check the workspace name at the top, then click Allow.
You should see You return to Connectors and Slack says connected, with the workspace name.
Press Test.
You should see "Slack accepted the sign-in (workspace) ... can read your channels." The access granted is listed in plain words, and it says Channels only.
TO BE CONFIRMED · Scope list
The save-your-app page lists only the three bot scopes, while Cockpit asks Slack for the user scopes above when Slack reading is switched on. The list here is the union of both, taken from the code. Confirm on the test drive that the connection succeeds with it, and tell the owner if Slack asks for anything else.
ADVISORY
Direct messages are a separate step on a page of their own, and a separate consent. Skip it in the test drive. If Slack returns direct-message access you did not ask for, Cockpit stores nothing and says so.
6.5 Postman
WARNING
A Postman API key can do everything its owner can do, and Postman cannot limit it to read-only. Use the Postman account you made for this test, never your main one.
Click Generate API Key. Name it Cockpit and choose when it expires. A shorter life is safer: 30 days suits a test.
You should see Postman shows the key once. Keep that page open.
Copy the key into the password manager.
In Cockpit, open Connectors, find Postman and click Connect. Read the first step (why a dedicated key), then paste the key in step 3. It is encrypted and never shown again.
Press Test in step 4.
You should see "Postman accepted the key (your username) ... Cockpit can read this account." Nothing is changed.
[Screenshot: Postman's API keys page with the new key]Figure 28
Figure 28. Postman's API keys page with the new key. Capture details are item 28 in the list of screenshots to capture. Call-outs to draw: 1 Key name; 2 Expiry.
CAUTION · When you finish testing
Disconnecting in Cockpit deletes the stored key but does not cancel it in Postman. Open Postman, Settings, API keys, and revoke the Cockpit key yourself.
6.6 Check everything
[Screenshot: The Connectors page with every test account connected]Figure 29
Figure 29. The Connectors page with every test account connected. Capture details are item 29 in the list of screenshots to capture. Call-outs to draw: 1 Two Salesforce orgs; 2 Two MuleSoft connections; 3 Capability tags.
Connected checklist
Salesforce shows two orgs, each Working or Not checked yet.
MuleSoft shows two connections, each with a passed Test.
GitHub, Slack and Postman each say connected, and each Test passed.
Every card's capability tag says Read only (Sandbox).
No secret, key or password is anywhere but the password manager.
6.7 Pass two: real systems
When the test drive has shown you what Cockpit reads and asks for, you can connect real systems. The procedures are the same. What changes is who is affected and what you should decide first.
WARNING
A real credential carries real power. Cockpit's Sandbox mode keeps Cockpit from using it to change anything, but the credential itself is not narrowed to read-only (except what you choose when creating a MuleSoft connected app). Anyone who gets the Consumer Secret, the client secret or the key can use it. Treat each as a password.
System
Decide before connecting a real one
Salesforce
Start with a sandbox (choose Sandbox, test.salesforce.com, or your My Domain in step 1) before any production org. Sign in as a user whose permissions are what you want the Copilot to see: the Copilot can read what that user can read, and with writes on, change what that user can change. Prefer a dedicated integration user.
MuleSoft
Choose scopes of View and Read only, and limit them to the environments Cockpit should see. Create a separate connected app for Cockpit so it can be revoked on its own.
GitHub
The sign-in covers every private repository the signed-in GitHub user can see. Use an account that can see only the repositories you want read, such as a dedicated user in your organisation. If your GitHub organisation restricts third-party apps, an organisation owner may need to approve Cockpit.
Slack
Cockpit connects as you and can read channels you are in and search what you can see. Use a workspace, or a user, that matches what you want read. Your Slack admin may need to approve the app.
Postman
Use a dedicated Postman user or service account that can only view the workspaces you want read, and a short expiry. Revoke the key in Postman when you are done.
Before a real system checklist
The test drive is complete and the answers in chapter 7 were as described.
The people who own the system know Cockpit will read it, and have agreed.
The credential belongs to a user or app with only the access you intend.
You know how to revoke it at the vendor, and have written it on your accounts sheet.
The mode chip says Sandbox.
Chapter 7
Your first flights
Example prompts for each built-in guide, what a good answer looks like, and what to check before you trust it.
How to judge any answer
The Copilot works from built-in guides (we call them recipes). Each one fixes the steps, the questions it may ask your system, and the shape of the answer. You do not name a recipe: you describe the job, and the Copilot uses the one that fits. Every recipe in this chapter is read-only: it reads and explains, and never offers to change anything.
Judging an answer checklist
Open the Brain panel's Activity tab. Do the tool lines match what the answer claims it read?
Is every number or name in the answer one you can find in the system itself, in a place you can open?
Does the answer say what it could not read ("not readable with your access") instead of guessing?
Did it state a limit of what it knows (for example that sharing was not evaluated)?
Is there any record Id, email or token repeated that it should have called "a record id"?
If something looks wrong, ask "Which query or tool call gave you that number?" A good answer can name it.
ADVISORY
A new Developer Edition org has little in it. A correct answer on a nearly empty org is often "nothing found" or "fewer than three". That is the Copilot being honest, not failing. The guides are told never to invent a class, a user, a date or a number.
ADVISORY · If a guide seems missing
The guides are switched on per environment. The Salesforce guides and the GitHub guides are on; the Org Discovery Report is switched on only where the owner has enabled it. If the Copilot answers as though a guide does not exist, say so to support@cockpitai.io.
7.1 The first question
Before the guides, prove the connection returns real data.
Ask the Copilot
How close is this org to its API limits?
A good answer reports real numbers from the org's limits and says which are nearly used. In a new org, nothing will be close. The API meter above the message box then shows your calls this run.
[Screenshot: The answer to How close is this org to its API limits?]Figure 30
Figure 30. The answer to How close is this org to its API limits?. Capture details are item 30 in the list of screenshots to capture. Call-outs to draw: 1 The answer's numbers; 2 API meter line.
Then one question per connected system. Note each result on your checklist:
System
Prompt
A real answer looks like
Salesforce
Which Apex classes touch the Account object?
A list, or "none" in a new org, said plainly.
MuleSoft
List my Anypoint environments.
Your trial's environments, for example Sandbox and Production.
GitHub
What repositories can you see, and what is in cockpit-practice?
The practice repository and its README.
Postman
List my Postman workspaces and collections.
Cockpit practice and Orders API.
Slack
Which Slack channels can you see?
Including cockpit-practice.
7.2 Explain a debug log
Needs: nothing connected. It reads only what you paste. It touches no system.
Ask the Copilot
Here is an Apex debug log from a failed save. What went wrong, and what is the usual fix?
(paste the log)
To try it without a real log, paste these made-up lines:
Sample to paste (made up for the test)
12:00:01.1 (1100)|EXCEPTION_THROWN|[14]|System.LimitException: Too many SOQL queries: 101
12:00:01.1 (1200)|FATAL_ERROR|System.LimitException: Too many SOQL queries: 101
Number of SOQL queries: 101 out of 100
A good answer, in this order: one plain sentence with the cause; a table of limit, used and allowed (only limits in your paste; any at 80 percent or more flagged); the top three suspects, each with a log line number or a class and line; the usual fix. It says which part is your paste and which part is its reasoning.
For a SOQL limit, the usual cause is a query inside a loop, and the usual fix is to query once into a Map.
If the error is not one it recognises, it says "not recognised", says what it can read, and asks for the missing part.
CAUTION
Real logs hold customer data, record ids and sometimes session ids. The Copilot is told not to repeat them and to tell you to rotate anything that looks like a token. Even so, paste only logs from throwaway orgs during the test drive.
Check: every suspect cites a line you can see in your paste. It does not name a class the paste does not show. It does not offer to fetch the log itself.
7.3 Org tour
Needs: a connected Salesforce org. A guided walk through an org you have just inherited, in about ten minutes of reading.
Ask the Copilot
I just inherited this Salesforce org. Give me a tour.
A good answer goes in seven steps and stops after each with one line asking whether to go on: org summary and licences; data model; automation; integration surface (installed packages, named credentials); limits; security risks; and what changed in the last 30 days. It uses the same sections as the Org Discovery Report (7.10).
Each step is two or three plain sentences, a small table if it helps, and what it means for someone taking over.
It ends with Five things to read first and Three things that look risky, naming only things it read. On a small org it gives fewer and says the tour cannot show business rules that are not written down.
A part it cannot read is listed as "not readable with your access" in its step and again at the end.
Check: pick one named object or flow and find it in Setup. It should be there. It should not call anything a bug.
7.4 Async job doctor
Needs: a connected Salesforce org. Finds background work that has quietly failed.
Ask the Copilot
Is anything quietly failing in the background in this org?
A good answer starts with one sentence (for example "3 classes failed in the last 7 days and 1 schedule looks stuck", or "nothing failed in the last 7 days"), then a table of job, failures, last error and last success, then any stuck schedules. A schedule is flagged when it should have run and did not, or is in an error or blocked state.
It counts what it can see and says so. It always lists what it did not check: failed Flow interviews, fault emails, platform event delivery and email send errors, which need Event Monitoring or admin settings. It never says the org is healthy about those.
It never offers to abort, reschedule, retry or change a job.
Check: in Setup, open Apex Jobs and compare the failures it names. A new Developer org will normally answer "nothing failed", which is correct.
7.5 Licence, storage and idle-user review
Needs: a connected Salesforce org.
Ask the Copilot
Review our Salesforce licences, storage and idle users.
A good answer gives a table of licence, used, total and free, largest free first (rows with a total of 0 left out); idle users who have not logged in for 90 days, oldest first, up to 20, with the total, and users who never logged in; and storage as used = Max minus Remaining, with the percent used, from the org's limits.
It calls idle users "candidates to ask about", because they may be integration or seasonal users. It does not tell you to remove anyone.
For storage per object it can only count records on a few objects and says its space figure is an estimate (Salesforce counts most records as about 2 KB).
It does not state or guess what a licence or a gigabyte costs, unless you give it a price.
Check: compare the licence table with Setup, Company Information. Compare the storage figures with Setup, Storage Usage.
7.6 Who can edit a field
Needs: a connected Salesforce org and a user in it. In a new Developer org, use your own admin user or a user you create.
Ask the Copilot
Can Priya Rao edit Opportunity.Amount? If not, why not?
A good answer gives the deciding reason first in one line, then the chain: who the user is (profile, role, active or not), each profile, permission set or permission set group that grants something, and what is missing if the answer is no. Editing a field needs Edit on the object and Edit on the field.
If more than one user matches the name, it lists them and asks which. If the user is inactive, it says so and stops.
For a grant that arrives through a permission set group, it says "granted through the group X unless the group mutes it", because muting is not evaluated.
It always says "Record-level sharing was not evaluated". Object and field access say whether the user can edit the field at all, not which records they can see.
CAUTION
If a query is refused (the connected Salesforce user may lack View Setup and Configuration), the Copilot names the table it could not read and stops. A missing table is not an answer of "no access". Do not treat it as one.
Check: open the user in Setup, then the permission sets and the field's field-level security, and confirm the chain.
7.7 Sandbox refresh checklist
Needs: a connected Salesforce sandbox. It lists what to note before a sandbox refresh and checks what is left after it. A person does the refresh in Setup; the Copilot cannot start or schedule one.
CAUTION · Not on a Developer Edition org
This guide first checks whether the org is a sandbox. A Developer Edition org is not a sandbox, so the Copilot will say that this chat is connected to a production-type org, and stop. That is correct behaviour. To try it you need a real sandbox.
Ask the Copilot
I am about to refresh this sandbox. What should I note down before I do?
Before: one table per area (named credentials, external data sources, remote site settings, outbound messages, scheduled jobs, connected apps, custom settings) with what, name, the value to note and what to do. Then a manual list of things the API cannot give, each with where to look in Setup. Anything it could not read is on the manual list, not guessed.
After: the same reads again. It asks which production hosts your integrations point at, then flags any endpoint whose host equals a production host as pointing at production, and lists same-domain hosts as "check". If you decline to name hosts, it lists every host and says nothing was compared.
Nothing is stored beyond the chat: copy the "before" table somewhere safe, and paste it back in the "after" chat.
Check: the "after" run flags nothing for an integration you know still points at its sandbox endpoint.
7.8 Pull request review
Needs: GitHub connected, and a pull request in a repository the connected user can see. It reviews the Apex and Flow files of one pull request against a fixed checklist of ten rules.
Make a pull request to test with
In your cockpit-practice repository, create a branch and add the file force-app/main/default/classes/AccountUpdater.cls containing the made-up class below. Open a pull request into the main branch.
You should see A pull request page with one added file.
Made-up Apex for the test
public class AccountUpdater {
public static void touch(List<Account> accts) {
for (Account a : accts) {
Contact c = [SELECT Id FROM Contact WHERE AccountId = :a.Id LIMIT 1];
update a;
}
}
}
[Screenshot: The test pull request on GitHub]Figure 31
Figure 31. The test pull request on GitHub. Capture details are item 31 in the list of screenshots to capture. Call-outs to draw: 1 Pull request number; 2 File name.
Ask the Copilot
Review pull request 1 in yourname-cockpit-test/cockpit-practice.
A good answer lists findings, high severity first. Each has the rule (R1 to R10), the severity, the repository, the file path, the short head sha, the line range, the line quoted exactly, why it matters in one sentence and the fix. For the class above, expect R1 (a query inside a loop) and R2 (a data change inside a loop), and probably R5 (no sharing keyword).
It reviews only Apex, trigger and Flow files and names the other changed files as not reviewed. It says how many pages of files it did not read.
No findings is a valid answer: "No findings from the ten rules in the files I read", with the files listed.
It never posts a comment, approves, or requests changes, and never calls the pull request safe: it read a diff, it did not run it.
Check: open the file at the sha it names and compare the quoted line and its number. If the line number matters and it was unsure, it should have confirmed with a file read before citing it.
7.9 Pull request description and release notes
Needs: GitHub connected. It writes text in the chat for you to paste. It cannot put it into the pull request.
Ask the Copilot
Write the pull request description for pull request 1 in yourname-cockpit-test/cockpit-practice, and what to tell QA.
Ask the Copilot
Write release notes for the commits between tag v1.0 and v1.1 in yourname-cockpit-test/cockpit-practice.
A good answer uses the repository's pull request template if it has one, keeping its headings in order, and leaves every checkbox unticked with "to be ticked by the author". Without a template: Summary, Components changed (each changed file in exactly one section, such as Apex classes, Flows or Tests), Risk (low, medium or high, with the reason, stated as its judgement), Test plan and Deploy notes.
It never says a test ran or passed unless a tool result says so. It names a ticket only if the key is in the title, description or a commit message.
Deploy notes contain only what the file types support. A file named destructiveChanges removes components and is called out first.
It says in one line what the text cannot know: it describes the diff and messages, not what was run or what is in the org.
Check: count the changed files on GitHub against the files listed in the answer. The guide tells the Copilot to make them match.
7.10 The Org Discovery Report
Needs: a connected Salesforce org, and the report switched on for your environment. It reads the org once, within a fixed call limit, and writes a report into a chat. It changes nothing in Salesforce.
Type /discovery in the message box and press Enter, or open Connectors and press Run discovery report on the org's card.
You should see A progress line such as "Reading limits (5 of 7)..." and then a message that starts with "# Org discovery report".
Read the report. Its sections follow the tour: org summary, data model, automation, integration surface, limits, security risks and tech debt hints.
Download it as Markdown, or its tables as CSV, with the buttons under the report.
[Screenshot: A finished Org Discovery Report in a chat]Figure 32
Figure 32. A finished Org Discovery Report in a chat. Capture details are item 32 in the list of screenshots to capture. Call-outs to draw: 1 Report date; 2 A not-readable marker if present; 3 Download buttons.
The report states its date. A part the connected user cannot read is marked not readable with your access; a part skipped because the report reached its call limit, or to protect your API allowance, says so.
Afterwards, ask follow-up questions in the same chat. The Copilot quotes the report's numbers and does not recompute them. For anything newer, it uses its tools and says the report may be out of date.
Check: compare the date and two numbers (for example the count of custom objects) with Setup.
7.11 More guides
These work the same way: read-only, honest about what they could not read, and never offering to change anything. Try them after the nine above.
Guide
Prompt to try
Needs
Flow documentation
Document the active flows on Account.
Salesforce
Where is this used
Where is the field Region__c used?
Salesforce (GitHub adds a code search)
Dead metadata finder
Which metadata looks unused, and what is the evidence?
Salesforce
SOQL assistant
Write a SOQL query for open opportunities over 10,000 and tell me if the filter is selective.
Salesforce. Selectivity is labelled an estimate.
Data dictionary
Give me a data dictionary for the Account object.
Salesforce. One object at a time; CSV as text in the chat.
Org health score
Give me a health score for this org.
Salesforce. A count of ok, watch and act with thresholds, never a percentage.
Out-of-band changes
What changed in setup in the last 30 days that is not in our repository?
Salesforce and GitHub. A lead to check, not proof.
Mule project review
Review the Mule project in owner/repo.
GitHub (MuleSoft adds deployment facts)
API spec review
Review the OpenAPI file in owner/repo against our API policies.
GitHub (MuleSoft or Postman adds more)
Postman collection from a spec
Make a Postman collection from the OpenAPI file in owner/repo.
GitHub. Writes JSON in the chat; nothing is created in Postman.
Chapter 8
Production flight
How writes work, how to switch Production mode on and off, the checklist to use before you approve a card, and how to check the result.
When to use Production mode
WARNING · Read this first
In Production mode, pressing Approve changes a real system: it creates or updates a Salesforce record, posts a Slack message, or opens a GitHub pull request. Cockpit has no undo. If you approve the wrong thing, you undo it yourself in that system. Until the test drive is complete, use Production mode only against the throwaway accounts from chapter 3.
"Production" here is the name of a Cockpit mode, not a statement about the org. A free Developer Edition org can be used in Production mode, and a real production org can be used in Sandbox. The risk is set by what is connected, not by the mode's name.
Stay in Sandbox for everything in chapter 7.
Switch to Production mode only for a specific write you mean to make, and switch back afterwards.
New accounts start in Sandbox, and every write needs a card.
How a write works
1You ask for a changeIn Production mode.
2The Copilot proposes itA write tool is offered only if the mode allows it.
4You press ApproveCockpit re-checks the mode and re-reads the target.
5The write is sent once30-second limit. Never retried.
6The result is reportedDone, refused (nothing changed), or not confirmed (check the system).
Illustration The path of a write. Each stage can stop it. Nothing is written before the fourth step.
The write actions in this edition
Action
What it does
What it cannot do
Salesforce: create
Creates one record of an object you name, with the field values on the card.
Values are plain text, numbers, true or false, or empty. At most 100 fields. No delete.
Salesforce: update
Updates one record, by its Id, with the field values on the card.
One record at a time.
Slack: post
Posts one message to a channel, as you.
Nothing is posted without a card.
GitHub: open a pull request
Creates a new branch named cockpit/... from the base branch, commits the files on the card, and opens a pull request.
Never pushes to an existing branch. Never merges. If the branch name exists, it stops and tells you to choose another.
These are switched on in stages (GitHub pull requests, then Salesforce records, then Slack posts). If you ask for a write whose action is not on yet, the Copilot says it has no write action for that, and nothing is changed. The tag on the Connectors card ("Read only (no write actions yet)") tells you in advance.
Sent once. A write has a 30-second limit and is never retried.
Refused means unchanged. If the system refuses (an HTTP 4xx), the answer says "... refused the change (HTTP 4xx), so nothing was changed." with the system's reason.
Not confirmed means check. If the connection drops, times out, or the system errors (5xx), the answer says the system "did not confirm the change ... so the record may or may not have been applied. Cockpit did not try again. Tell the user to check ... before asking for it again." Do exactly that: look in the system before you ask again.
The target is checked twice. It is named on the card, and read again when you approve. If it moved, the write is not sent: "approved for X, but it would now go to Y. Nothing was changed."
A tightened mode cancels it. Switching to Sandbox, or switching that connector's writes off, after a card appears makes approving refuse with "Mode changed, nothing was changed."
Where a write cannot start, no card appears and the answer says why, for example when the org is not connected, GitHub is not connected, your GitHub login cannot push to that repository, or the repository is archived.
Switching Production mode on and off
Click the mode chip.
You should see The mode panel opens with the master switch Production mode (read + write), off.
Turn the master switch on.
You should see A confirmation: "Switch to Production mode (read + write)?" It says changes are possible where a write action exists, every change still asks your approval, it does not describe the connected org, and you can switch back at any time.
Click Switch to Production mode. To back out, click Stay in Sandbox.
You should see The chip turns amber and says "Production: read + write". The panel's connector rows read "can write, each write asks for approval" (or "read only (no write actions yet)" for a connector with none).
To narrow it, turn off the switch of any connector you do not want to write to.
You should see That row reads "read only (you switched writes off)".
When you are done, turn the master switch off.
You should see The chip returns to Sandbox. No confirmation is asked.
[Screenshot: The Switch to Production mode confirmation]Figure 33
Figure 33. The Switch to Production mode confirmation. Capture details are item 33 in the list of screenshots to capture. Call-outs to draw: 1 Confirmation text; 2 Switch to Production mode; 3 Stay in Sandbox.
CAUTION
A chat made Sandbox from its menu, or with an org attached, stays Sandbox even when the account is in Production mode. Start a new chat to write.
Before you approve: the checklist
Run through this on every card. It takes under a minute, and the card is built so that every answer is on it.
Before approving a write checklist
Whose system is this? The card's last words name the target: the Salesforce org (name and address), the Slack workspace, or the GitHub repository and base branch. Is that the one you mean? Do not rely on the chat's org chip; read the card.
Is it the right kind of system? A throwaway Developer org, or something real? If real, stop and ask whether this change has been agreed.
Read "Exactly what will run" to the end. For Salesforce: the object, the record Id for an update, and every field and value. For Slack: the channel and the full message text. For GitHub: the repository, the new branch name, the title and every file path and its content.
Is it one thing? A Salesforce change touches one record. If you asked for ten, expect ten cards.
Do the values match what you asked? A wrong Id, a wrong amount, a name misheard by the microphone: the card shows what will be sent, not what you meant.
Does the blast radius line say what you expect? It reads "Writes to <target>".
For a Slack post: is anything in the message confidential? Everyone in the channel will see it as coming from you.
For a pull request: is the base branch right? The pull request is only a proposal, but the new branch and its commit are created on approval.
Is it still wanted? Cards expire after 10 minutes. If you were interrupted, deny it and ask again.
In doubt, Deny. Denying writes nothing, and you can ask again with a clearer request.
[Screenshot: A real approval card for a Salesforce create]Figure 34
Figure 34. A real approval card for a Salesforce create. Capture details are item 34 in the list of screenshots to capture. Call-outs to draw: 1 Summary and target; 2 Exactly what will run; 3 Blast radius; 4 Approve and Deny.
WARNING
Never approve a card you have not read to the end. Text in your systems (a record, a log, a pull request description) is treated by the Copilot as data, but a card is the last line of defence if something odd got through. The card shows the exact input, and that is what runs.
ADVISORY
"Always allow" is not offered for writes. Every write is decided on its own.
Three first writes on the test accounts
Do these in your throwaway orgs, one at a time, with the checklist above. Each one is small, and each is something you can undo by hand.
A Salesforce record
Switch to Production mode (see above). Start a new chat and pick org 1.
Ask: Create an Account named Cockpit Test Drive One.
You should see An approval card: "Create a Account in Salesforce with Name (Salesforce org ...)" and the input {"sobject": "Account", "fields": {"Name": "Cockpit Test Drive One"}}.
Run the checklist. Press Approve.
You should see The card changes to approved, and the Copilot reports the new record's Id.
In Salesforce, open Accounts and find it.
You should see Exactly one Account named Cockpit Test Drive One.
Delete it in Salesforce when you have finished. Cockpit has no delete action.
A Slack message
Ask: Post "Cockpit test drive: hello" in #cockpit-practice.
You should see A card naming your Slack workspace and the full text.
Run the checklist, press Approve, and look in the channel.
You should see The message appears, as you.
A GitHub pull request
Ask: Open a pull request in yourname-cockpit-test/cockpit-practice that adds docs/hello.md with one line of text.
You should see A card naming the repository and the base branch, with the new branch name cockpit/... and the file.
Run the checklist, press Approve.
You should see A pull request appears on GitHub from the new branch. It is open; nothing has been merged.
Close the pull request and delete the branch on GitHub when you have finished.
[Screenshot: The Account found in Salesforce after approval]Figure 35
Figure 35. The Account found in Salesforce after approval. Capture details are item 35 in the list of screenshots to capture. Call-outs to draw: 1 Account name; 2 Created date.
Also try Deny once, on any card. Check that nothing was written.
Afterwards
Check the result in the system, not only in the chat.
The Modes page lists your recent mode changes, and the count of requests held back by a mode in the last 30 days.
The Approvals tab of the Brain panel and the chat itself keep each decided card, with who decided and when.
Switch back to Sandbox.
Production flight checklist
I read the card to the end before each Approve.
I checked the result in the system after each write.
I denied one card and nothing was written.
I switched back to Sandbox.
I removed what I created in the test accounts.
TO BE CONFIRMED · Production writes in the live service
The owner has agreed to switch the write actions on in the live service in stages, after the live write journeys have passed. Which ones are on when you read this is shown by the capability tags on your Connectors page, not by this manual.
Chapter 9
Captain and Crew
Teams: one or more Captains, any number of Crew, and what each can do. Switched on per customer, for teams only.
Status: only for teams, switched on per customer
ARRIVING · Only for teams, switched on per customer
Teams are built, and are switched on for a customer when that customer's team is set up. If your rail has no Team entry and your sign-in page has no "Sign in to a team" line, your environment does not have Teams and nothing in this chapter can be done. Where this chapter and the product differ, the product is right.
Without a team, every person has an individual account: their own sign-in with Google, their own connections, chats, modes and approvals. With a team, each person still has their own connections, chats, modes and approvals. What the team adds is one place where a Captain decides who is in and which connectors each person may use.
Captain and Crew
Role
Who
What they can do
Captain
The team's administrator. The first Captain is set up by the Cockpit owner when approving the team's request. A Captain can make another person a Captain.
Invite people by email, choose what each may connect, change or remove access, promote another Captain, remove a member, read the team's activity log. A Captain is also a normal user with their own connections and chats.
Crew
Everyone else on the team. There is no seat limit.
Work as an individual does: their own connections, chats, Sandbox or Production mode and approvals, limited to the connectors the Captain allowed.
A person belongs to one team at most. There is no directory or single sign-on in the first version.
How a team starts
An architect asks for a team account on the request form, naming the team.
You should see The request reaches the Cockpit owner as a team request.
The Cockpit owner approves the request as a team, and enters the Captain's name and email.
You should see The Captain receives an invitation email.
The Captain follows the link in the email, chooses a password and signs in.
You should see The console opens, with a Team entry in the settings list.
The Captain invites each person from the team page (9.1). Each person receives an invitation email, chooses a password and signs in at the team door (9.3).
Team members sign in with an email address and password, on a separate door of the sign-in page, not with Google. Members do not have a 7-day trial clock. The desktop apps hand sign-in to the browser, as they do now (9.3).
9.1 The Captain's team page
A Captain opens Team from the settings list (the same list as Connectors and Account) or goes to /app/team. The page is called Your team members. At the top it says which team you are a Captain of. Below it are the invite form and the list of people.
[Screenshot: The Captain's team members page with one active and one invited person]Figure 36
Figure 36. The Captain's team members page with one active and one invited person. Capture details are item 36 in the list of screenshots to capture. Call-outs to draw: 1 Invite someone form; 2 Starting access list; 3 Connector access lists; 4 Save access button; 5 Role list and Change role; 6 Send again; 7 Remove.
Invite someone
Under Invite someone, type the person's Email address. The Name is optional.
You should see If the address is mistyped the page says "Enter a valid email address." and sends nothing.
Choose Starting access: Everything (read and write), Salesforce only, Salesforce and MuleSoft, or Nothing yet. Press Send invitation.
You should see The page says "Invitation sent to <address>." and the person appears in the list as Invited.
Two other lines can appear instead. "... already has a sign-in. They can sign in at the team door and the invitation is accepted." means that address already has a Cockpit sign-in, so no email was needed. "... is added, but the invitation could not be sent just now. Use Send again in a moment." means the sign-in service could not be reached; the person is on the list, and Send again tries once more.
Change what one person may connect
Find the person in the list. Under Connector access for <name>, set each connector (Salesforce, MuleSoft, Slack, GitHub, Postman, Workstation) to Not enabled, Read only or Read and write.
You should see The line below the lists, "Now: ...", still shows the saved access until you save.
Press Save access for <name>.
You should see The page says "Access updated for <name>." and the "Now:" line changes. The button is greyed out until you change something.
Change a role, resend or remove
To make someone a Captain or take that back, choose Captain or Crew in their Role list and press Change role.
You should see "<name> is now a Captain." or "<name> is now Crew." A Captain can use every connector, so a Captain's access lists are replaced by a note saying so. You cannot change your own role.
To send an invitation again, press Send again on a person who shows Invited. An invitation that has run out shows Invitation expired; Send again makes a new one.
To take someone out, press Remove. Confirm the question.
You should see For someone already in: "Remove <name> from the team? Their sign-in stops working and their connections to your systems are cut off right away." For an invitation: "Cancel the invitation to <name>?" Then "<name> was removed."
Each active person's line also says what they have connected (for example "Connected: Salesforce (dev)"), or "Nothing connected yet.", and what they have spent on the Copilot this month against their budget. It does not show their chats.
ADVISORY
You cannot remove yourself or change your own role from this page. A person can always delete their own account from the Account page.
9.2 What a team member sees
A team member who opens Team sees a page with no controls. It says "You are part of <team>.", names the Captain ("Your Captain is <name> (<address>)."), and lists What you can use: each connector as Not enabled, Read only or Read and write. Under it: "Ask your Captain if you need another connector." A person who is not in a team who opens /app/team is told "You are not part of a team."
[Screenshot: The team page as a team member sees it]Figure 37
Figure 37. The team page as a team member sees it. Capture details are item 37 in the list of screenshots to capture. Call-outs to draw: 1 Team name; 2 Captain line; 3 What you can use; 4 Ask your Captain note.
On the Connectors page, a connector set to Not enabled shows as not enabled by the Captain, with no Connect button.
9.3 The team door: Sign in to a team
ARRIVING · Only for teams, switched on per customer
The line described here appears on the sign-in page only on a build with Teams switched on. On any other build the sign-in page is exactly as chapter 4 describes, with no extra line.
Open the sign-in page. Under the Google button, press the quiet line Sign in to a team.
You should see The same page changes: it says "Use the email address your Captain invited and your password." and shows only an email and password form. There is no Google button and no sign-up link.
Type your email address and your password and sign in.
You should see The console opens. If you have forgotten the password, the reset link is inside the form.
To go back, press Sign in with Google instead.
[Screenshot: The team door of the sign-in page]Figure 38
Figure 38. The team door of the sign-in page. Capture details are item 38 in the list of screenshots to capture. Call-outs to draw: 1 Invited address line; 2 Email and password form; 3 Sign in with Google instead link.
A new member's first visit is the link in the invitation email. That page says "Choose a password to join your team." After that, use the team door each time.
ADVISORY · In the Mac and Windows apps
On the sign-in screen of the app, press Sign in to a team, then Enter Cockpit. Your browser opens the team door, and once you have signed in it hands you back to the app.
9.4 What the Captain controls
For each member and each connector (Salesforce, MuleSoft, Slack, GitHub, Postman, and the Workstation, which is not available today) the Captain sets a level:
Level
Meaning
None
The connector is not available to that person. It shows as not enabled by the Captain, with no Connect button, and the Copilot has none of its tools.
Read
The person can connect it and the Copilot can read it. No write action is offered, whatever the mode.
Write
As Read, plus the write actions, if the person is in Production mode and approves each card.
Presets save time: Everything (read and write), Salesforce only, Salesforce and MuleSoft, or Nothing yet when you invite, and any combination of connectors afterwards (9.1).
ADVISORY · The smaller of two limits
A member's power is the smaller of the Captain's level and the member's own mode. A member with Salesforce at Read, in Production mode, can read Salesforce and cannot write. This is enforced on the server, at every place a connector is reachable, and a failure to look up the grant means no access.
9.5 What the Captain sees, and does not
The Captain can see
The Captain cannot see
Who is on the team, their role and access, and whether each has connected each provider.
A member's chats or messages.
An activity log: who, when, which connector and which action (for example a tool call, an approval decision, a mode change).
The input of a tool call, or what the Copilot answered.
Each member's monthly AI spend against their budget.
A member's tokens, secrets or connections.
A log of team changes: invited, joined, access changed (before and after), removed.
A member's approval cards.
ARRIVING · Not on the team page yet
The brain records the team's activity and the log of team changes, but the team page in this edition shows neither. What the team page does show is in 9.1: who is in, their role, their access, what they have connected and their monthly Copilot spend.
Connections, chats, the Workstation and the AI budget are per member. Nothing is shared in the first version. A write that a member approves is attributable twice: to their approval in Cockpit, and to their own login in the customer's system.
ADVISORY
A member approves their own writes. The Captain decides whether a member can write at all, by the level. A rule that the Captain must approve members' writes is a possible later option, only if a customer asks for it.
9.6 Removing a person
Removal cuts the person off at once: their access, runner tokens, connections (revoked where the provider allows) and running tasks.
Their data is kept invisible for a 30-day grace period and then purged, or purged at once if the Captain chooses.
A person can always delete their own account, whether Crew or Captain. If the last Captain deletes their account, the team is suspended and the Cockpit owner is told.
9.7 Planning for a team of six
Plan a team checklist
Decide who will be the Captain.
List each person's work email address. Each person needs an address that is not already an individual Cockpit account.
For each person, choose None, Read or Write for Salesforce, MuleSoft, Slack, GitHub and Postman.
Decide whether the Captain wants any member in Sandbox only. Each member's mode is their own.
Decide whether anyone's retention needs (a longer hold, an export) differ from the 30-day grace period, and tell the owner before launch.
Pricing for teams is by quotation: ask support@cockpitai.io. Online payment is not available.
Chapter 10
Troubleshooting
The messages you may see, in the words the product uses, what each means and what to do.
Start here
Most problems are a copied value with a stray space, or a step done in the wrong order. Find the message, or the symptom, below.
ADVISORY · The reference code
When something fails on Cockpit's side, the message ends with a reference such as Reference: CKP-ab12cd34ef56. Quote it when you write to support@cockpitai.io: every line of that request can be found from it. Send the code and a screenshot. Never send passwords, secrets or keys.
ADVISORY
Starting over is always safe. Any connection can be disconnected and added again. Disconnecting does not delete the app or key in the other tool; revoke those there when you are done.
Sign-in and access
What you see
What it means
What to do
Waiting for approval. "Cockpit is in private beta, so request access and we will email you as soon as you are in."
Your address is not approved yet.
Press Request access if you have not asked. Wait for the email. Sign in again with the same address.
"You signed in with a hidden Apple email..."
Apple gave Cockpit a relay address that cannot match.
Sign in with Google and the approved address, or add that address to your account and make it primary.
Sign-in shows a different Google account
A different browser profile is signed in.
Use a clean browser profile, or choose the right account in Google's chooser.
"Enter a valid email address." on Request access
The address is mistyped.
Correct it.
"Could not send that. Please try again in a moment."
The request did not reach Cockpit.
Send it again.
"Cockpit could not check your access just now. Reload in a moment."
Cockpit could not reach its service for a moment.
Reload the page.
"Your 7-day Pro trial has ended. You can still read everything."
The trial is over, so Cockpit is read-only: no new chats, no decisions on approvals, no connection changes.
Press Join the waitlist for paid, or write to support.
A connector shows as not enabled by the Captain, with no Connect button
You are in a team and your Captain has not given you that connector.
Ask your Captain (chapter 9).
"Your account doesn't have access to Cockpit yet. Request access at cockpitai.io/request-access."
A phone or desktop app signed in with an address that is not approved.
Request access, as in chapter 4.
When Google will not let you in
What Google says
What it means
What to do
admin_policy_enforced, or "This app is blocked"
Your organisation's Google Workspace administrator blocks the app.
Ask your Workspace administrator to allow Cockpit. A personal Gmail account is not affected.
org_internal
Cockpit's Google settings only allow people inside one organisation.
Google is limiting new sign-ins for Cockpit for a while.
Wait an hour and try again, or write to support.
disallowed_useragent
Google refuses to sign in inside another app's window.
Open Cockpit in your normal browser, or use the Cockpit app, which opens the browser for you.
Connecting
After a connect attempt, the Connectors page shows one line saying what happened. These are those lines, and the messages from the vendors that often cause them.
What you see
What it usually means
What to do
"No problem: you declined the <system> connection. Nothing was stored."
You pressed Cancel or Deny at the vendor.
Start the connection again if you meant to allow it.
"The <system> sign-in expired or didn't match, so nothing was stored. Please start the connection again."
The sign-in took too long, or the page was reloaded part-way.
Start again from Connectors, and finish in one go.
"This connection was started from a different Cockpit account."
You are signed in to Cockpit as someone else than when you began.
Sign in as the account that started it, and try again.
"<system> didn't accept the sign-in, so nothing was stored. Try again in a moment."
The vendor refused the code exchange.
Wait a moment and retry. For Salesforce, check the Consumer Key and secret.
"<system> isn't set up on our side yet, so I can't start that connection."
Cockpit's own app for this system is not configured in this environment.
Tell support. You cannot fix it. For GitHub this is the "app is not configured" case.
"<system> didn't accept that client id and secret for that region."
A value was pasted wrongly, or the region is wrong.
Copy both again with no stray spaces. For MuleSoft, check the region matches your Anypoint address bar.
"<system> connects through your own app. Enter your app's details first."
No app is saved yet.
Paste the app's client id and secret first.
"<system> is already connected. Use Reconnect..."
A connection exists.
Use Reconnect on the card if you want to replace it.
"The <system> login worked, but storing it failed. Nothing was saved."
A problem on Cockpit's side.
Try again. If it repeats, send the reference.
"Couldn't save your app. Nothing was stored. Check the details and try again."
The app's details were not accepted.
Check each field.
"Enter your Salesforce address, for example your-company.my.salesforce.com."
You chose My own domain without an address.
Type the address.
"Enter your app's consumer key." / "Enter your connected app's client id and client secret." / "Enter your Slack app's client id and client secret."
A required box is empty.
Fill it in.
Messages from the vendors
System
What you see
What it usually means
What to do
Salesforce
redirect_uri_mismatch, or a callback error
The callback URL in the app differs from Cockpit's.
Copy the Callback URL again from step 2 into the app with no spaces, and save.
Salesforce
invalid client, or invalid client credentials
The Consumer Key or secret was pasted wrongly, or the app is not switched on yet.
Wait two minutes after creating the app, then copy both values again.
Salesforce
An approval error after you sign in
The app's policy does not allow your user.
In the app's policies, allow all users to self-authorize, or approve your user, then retry.
MuleSoft
Test fails with 401 or 403
Wrong region, wrong app type, or missing View scopes.
Check the region against the address bar. Recreate the app as client credentials with the four View and Read scopes.
Postman
"That doesn't look like a Postman API key. Nothing was stored."
The key was pasted wrongly, is too short, or was revoked or expired.
Generate a new key and paste it again.
Postman
"You are signed out. Sign in again, then paste the key. Nothing was stored."
Your Cockpit session ended.
Sign in, then paste again.
Slack
Slack shows a different workspace
You are signed in to the wrong Slack workspace.
Sign out of Slack in the browser, sign in to your test workspace, and retry.
Slack
"... returned access to direct messages that wasn't asked for, so nothing was stored."
Slack's grant included direct messages.
Connect again and choose the direct messages step only if you want it.
On a card, Needs reconnect means the provider refused the saved sign-in or key. Press Reconnect. Not checked yet means Test has not been pressed. Test failed shows the vendor's reason.
Chat and answers
What you see
What it means
What to do
"The Copilot couldn't answer this message. Reference: CKP-..."
The AI provider refused or could not read the request.
Send the reference to support. Do not retry more than twice.
"The model is busy right now, please try again in a minute. Reference: CKP-..."
The AI provider was overloaded.
Wait a minute and retry.
"You've used this month's AI allowance. It starts again on <date>. Reference: CKP-..."
The month's AI budget for your account is used. No message or run was created.
Wait for the date, or write to support.
"Before your first chat, agree to Cockpit sending your messages to its AI providers."
You have not agreed, or you withdrew, or the provider list changed.
Press Agree, or Review and agree. The message you typed is put back in the box.
"Chat is off until you agree to Cockpit sending your messages to its AI providers."
You pressed Not now.
Press Review and agree.
"Cockpit is having trouble right now. Please try again in a moment."
Cockpit's service cannot be reached.
Wait a moment and retry.
The Copilot says it cannot read something, "not readable with your access"
The connected user lacks permission, for example View Setup and Configuration.
Reconnect as a user with that permission, or accept the gap.
The Copilot says Sandbox is on and nothing was changed
You asked for a change in Sandbox.
Switch to Production mode only if you mean to write (chapter 8).
The Copilot says it has no write action for that
That kind of write is not switched on yet.
Check the capability tag on the Connectors card.
"The discovery report is not available for that org. Connect it first." / "The Copilot is still working in this chat. Wait for it, then run the report." / "The report could not be started. Try again in a minute."
The report needs a connected org and an idle chat.
Connect the org, wait for the chat to finish, or retry.
Modes and approvals
What you see
What it means
What to do
"This chat is in Sandbox and stays there. Start a new chat to write."
A chat can be tightened but never loosened.
Start a new chat.
"Couldn't change the mode. Nothing was changed, and what you see is how it is now."
It was decided already, perhaps on another screen.
Refresh. Nothing happens twice.
"Always allow is only for plans and reads. Approve or deny this write on its own."
Writes are never always-allowed.
Decide the card.
Approve and Deny are greyed out, with the trial-ended sentence
Your trial ended.
See Sign-in and access.
"approved for X, but it would now go to Y. Nothing was changed."
The target moved between the card and the approval.
Check the chat's org, and ask again.
Sandbox, Production and your approval cards
Two different things are called Sandbox and Production, and a card can show both. The mode (Sandbox or Production, the chip at the top) decides whether a card can appear at all. The target on the card names the system the change will land in, and for MuleSoft it also says what kind of environment that is.
What you see
What it means
What to do
You asked for a change and no card appeared; the Copilot says Sandbox is on and nothing was changed
In Sandbox mode no approval is possible. The request is turned away before any card is made.
If you mean to write, switch to Production mode first (chapter 8), then ask again.
A card appears in Production mode, with the target line "MuleSoft ... environment <name> (sandbox)"
The kind of environment is in brackets, as Anypoint reports it. Cockpit changes MuleSoft sandbox and design environments only.
Check the environment name and the kind in brackets before you approve.
The Copilot says an environment "is a production environment" (or another kind) and that Cockpit changes sandbox and design environments only, and nothing was changed
A MuleSoft write was asked for in an environment that is not a sandbox or design one. No card is made.
Choose a sandbox or design environment.
You tightened the mode after a card appeared, and Approve says "Mode changed, nothing was changed."
Approving a card after the mode was tightened is refused, and nothing is changed.
Ask again after the mode is as you want.
[Screenshot: A MuleSoft approval card whose target names the environment and its type]Figure 39
Figure 39. A MuleSoft approval card whose target names the environment and its type. Capture details are item 39 in the list of screenshots to capture. Call-outs to draw: 1 Target line with the environment type; 2 Exactly what will run; 3 Approve and Deny.
Limits in one run
Each kind of write can be asked for only a few times in one chat run, so a loop cannot fill your screen with cards. The Copilot tells you in the chat in the limit's own words, for example "exchange_publish: at most 6 calls in one chat run (a limit set for this environment)."
CAUTION · It counts cards asked, not changes made
The count goes up when the Copilot asks, before you decide. A card you deny, a card that expires and a write that fails all count. So "at most 6 calls" can be used up with nothing published at all. Nothing is sent and no card is made once the limit is reached.
What you see
What it means
What to do
"... at most N <things> in one chat run." (for example 6 calls for publishing an asset, publishing a jar and deploying, 3 policies applied, 2 pull requests; the numbers differ by environment)
The Copilot has already asked for that kind of write the most times allowed in this run.
Tell the Copilot what you want done next, in a new message. A new message starts a new run with a fresh count.
The limit message appears although you approved nothing
Earlier cards in the same run were denied, expired or failed, and they still count.
Check the Approvals tab of the Brain panel to see them, then send a new message.
In Sandbox mode a write is turned away before it is counted, so a refused write does not use up a limit.
Writes
What you see
What it means
What to do
"... refused the change (HTTP 4xx), so nothing was changed."
The system said no (a missing permission, a bad value, a validation rule).
Read the reason after it, fix the request, ask again.
"... did not confirm the change ... may or may not have been applied. Cockpit did not try again."
The connection dropped or the system errored after the write was sent.
Check the system. Only ask again if the change is not there.
"the Salesforce org this chat uses is not connected. Reconnect it on the Connections page. Nothing was changed."
The org was disconnected.
Reconnect it.
"Slack is not connected. Connect it on the Connections page. Nothing was posted."
No Slack connection.
Connect Slack.
"your GitHub login cannot push to owner/repo, so Cockpit cannot open a pull request there. Nothing was changed."
The connected GitHub user has no write access.
Use a repository you can write to.
"owner/repo is archived" / "was not found, or your GitHub login cannot see it" / "the branch X does not exist"
The repository or base branch is unavailable.
Check the name and branch.
"the branch cockpit/... already exists ... Choose another branch name."
An earlier attempt created it.
Delete the branch on GitHub, or ask for another name.
"GitHub failed while the commit was being prepared ... No branch and no pull request were created."
GitHub failed before the branch existed.
Nothing is left behind. Ask again.
Microphone and apps
What you see
What to do
"Cockpit cannot use the microphone..."
Allow the microphone for the site in browser settings.
No microphone button
Your browser has no speech recognition. Type.
Mac: a prompt about an app downloaded from the internet
Click Open. It appears the first time.
App opens but does not sign in
Click Enter Cockpit again. The browser signs you in, then hands back to the app through cockpit://.
Desktop app: "Cockpit can't be reached. Check your internet connection. Cockpit will try again by itself."
The app could not reach Cockpit (no internet, a slow network or a blocked address). Check the connection. It tries again by itself, or press Try again now.
Desktop app: a team member cannot sign in with Google
A team member signs in at the team door, with email and password. On the sign-in screen press Sign in to a team (chapter 9).
Support asks for your version
In the app choose Help, then Copy Diagnostics, and paste it into your message (chapter 5). It holds versions only.
No Download button
It shows only to approved accounts, on a Mac or Windows computer, and not inside the apps.
If nothing here helps
Before writing to support checklist
I have the reference code (CKP-...) if the message showed one.
I know which step I was on and what I expected.
I have a screenshot with no secret in it.
I did not retry more than twice.
Chapter 11
Glossary
The words used in the product and in this manual, in alphabetical order.
Terms
Two words are easy to confuse. Sandbox mode and Production mode are modes of Cockpit. A Salesforce sandbox and a Salesforce production org are kinds of org. A Developer Edition org can be used in Production mode, and a production org can be used in Sandbox mode.
Term
Meaning
Anypoint Platform
MuleSoft's website for building and running integrations.
API key
A long password for one tool, created by you and shown once. Postman uses one.
Approval card
The box in the chat that shows exactly what a change will do and waits for your Approve or Deny.
Blast radius
The line on an approval card that says where the change lands, for example "Writes to Salesforce org ...".
Board
The page that shows your work as cards in four columns. Beta, switched on for testers.
Brain panel
The panel on the chat that shows what Cockpit ran, your approvals and API usage.
Callback URL
The address a system sends you back to after you approve a sign-in. It must match exactly. Also called a redirect URL.
Captain
A team administrator. Only for teams, switched on per customer.
Client credentials
A way for an app to sign in as itself, without a person. The MuleSoft connected app uses it.
Client id and client secret
An app's username and password: two long codes. Keep the secret private.
Connected app (MuleSoft)
The door you create in Anypoint so Cockpit can read it.
Connector
A system you connect to Cockpit.
Consumer Key and Consumer Secret
A Salesforce app's client id and client secret.
Copilot
The AI in the chat.
Crew
Team members. Only for teams, switched on per customer.
Developer Edition
A free Salesforce org made for learning, with sample data.
Diagnostics
Copy Diagnostics in the desktop apps: a short block of text with versions, for support. No account details.
Discovery report
A one-click read-only report on a Salesforce org, written into a chat.
External Client App
The Salesforce app you create so an outside tool such as Cockpit can sign in.
Fingerprint (SHA-256)
A short code computed from the exact input of a write. The approval is bound to it.
Org
One private copy of Salesforce, with its own data and users.
OAuth
The sign-in method in which you approve a tool without giving it your password.
Per-run limit
The most times one kind of write may be asked for in a single chat run. Cards asked count, not only those approved.
PKCE
Proof Key for Code Exchange: an extra check on an OAuth sign-in that stops a stolen code from being used.
Production mode
The Cockpit mode in which writes are possible, each after your approval. Not a statement about the org.
Pull request
A proposal to change code that your team reviews before anything is merged.
Rail
The strip of icons at the left of the console (the bottom on a phone).
Recipe
A built-in guide that fixes the steps and the shape of the Copilot's answer for one kind of job.
Reference code
A code like CKP-ab12cd34ef56 shown with a failure, for support to find the request.
Sandbox mode
The Cockpit mode in which nothing can be changed. Not the same as a Salesforce sandbox org.
Salesforce sandbox
A copy of a Salesforce production org for testing. Logs in at test.salesforce.com.
Scope
One specific permission you give to an app.
Setup
The area inside Salesforce where you change settings (gear icon).
SOQL
Salesforce's query language.
Standing approval
An "Always allow" for a plan or read tool. Never for writes.
Target
Where a write lands: a Salesforce org, a Slack workspace, or a GitHub repository and base branch.
Tool
One thing the Copilot can do in a system, such as run a query. Writes are tools that need approval.
Trial
The 7-day Pro trial that starts at your first sign-in.
Vault
Cockpit's encrypted store for your connection credentials.
Workstation
A private machine in the cloud for code tasks, one per person, with its own disk. It does one task at a time and goes to sleep after about 30 minutes without work. Not available in this edition.
Chapter 12
Quick reference card
One page to keep beside you: the modes, the approval check, the commands and where to find things.
The card
Modes
Chip says
Cockpit can
Sandbox
Read only. Nothing is created, changed, posted or deleted.
Production: read + write
Also write, only where a write action exists, only after you approve each card.
Before Approve checklist
The target (org, workspace, repository) is the one I mean.
I read "Exactly what will run" to the end.
One record, or one message, or one pull request, as I asked.
The values are right. I am inside 10 minutes.
In doubt: Deny. Then check the result in the system.
Where things are
I want to
Go to
Connect, test, disconnect
Rail, Connectors
Switch mode
Mode chip (top bar), or Account, Modes
See waiting cards
Rail, Approvals
Withdraw AI consent, download apps, delete account
Rail, Account
Run a SOQL query, browse objects, see MuleSoft deployments (where switched on)
Rail, Workbench
Run the Org Discovery Report
Type /discovery, or Connectors, Run discovery report
See my work as cards (beta)
Rail, Board
Invite people, set what each may connect (teams only)
Settings list, Team
Copy what support needs from the desktop app
Help menu, Copy Diagnostics
Start fresh
Chats, New thread
Limits and times
What
Value
Approval card lifetime
10 minutes
Salesforce calls in one run
About 40
A write is sent
Once, with a 30-second limit, never retried
One kind of write in one chat run
A few, often 2 or 3 (the message names it). Cards asked count, not only those approved; then send a new message
Trial
7 days from first sign-in
If it goes wrong
Message
Do
Reference: CKP-...
Send it to support. Do not retry more than twice.
Needs reconnect
Reconnect the card.
"... did not confirm the change ..."
Check the system before asking again.
Waiting for approval
Wait for the email; sign in with the same address.
Anything else
support@cockpitai.io. Never send passwords, secrets or keys.
Chapter 13
The Workbench
Run SOQL and SOSL on a connected Salesforce org, chart the results, browse its objects, fields and setup data, read its Apex logs, watch its limits, and see your MuleSoft deployments, APIs and logs, on a screen that only reads.
What the Workbench is
ARRIVING · Switched on per environment
The Workbench is built and is being tried before it is switched on everywhere. If your rail has no Workbench entry, your environment does not have it yet. Nothing in this chapter can be done until it does.
The Workbench is a page next to the chat for the jobs a developer does with a mouse and a keyboard: write a SOQL query and read the rows, look up what fields an object has, and check what is deployed in MuleSoft. It is the same page in the browser, in the Mac app and in the Windows app.
It only reads. There is no button on it that creates, changes, deploys, stops or deletes anything. That is true in every mode and for every org, including Production. The Workbench panels do not use an AI model and never send anything to the Copilot on their own: rows, logs and cell values reach the Copilot only when you choose to send them, and you see exactly what goes first.
The tabs
Tab
Use it to
Query
Write a SOQL query, run it on one of your Salesforce orgs, and read, sort, copy or download the rows.
Objects
Search an org's objects, read an object's fields, relationships and record types, and add a field to your query with one click.
Metadata
Read the setup data of the org: Apex classes and triggers, flows, validation rules, custom objects and fields, Lightning web components, installed packages, record types, permission sets and profiles.
Limits
See how much of the org's daily and storage limits is used, as gauges, most used first.
MuleSoft
See the deployments of a MuleSoft environment and the APIs with the policies applied to each. Shown only where MuleSoft discovery is switched on.
Search and Logs
Search many objects at once with SOSL, and read the org's Apex debug logs. Part of the second wave in 13.8, which is switched on separately.
Open it from the rail (the window icon, labelled Workbench). At the top, choose the Salesforce org. Each org shows its type, and a Production org also shows a note that the page only reads there.
[Screenshot: The Workbench with a query and its result rows]Figure 40
Figure 40. The Workbench with a query and its result rows. Capture details are item 40 in the list of screenshots to capture. Call-outs to draw: 1 Org picker and read-only badge; 2 Query box; 3 Run button; 4 Result line; 5 Sortable column headings; 6 History and Saved.
13.1 Run a query
Run your first query
Open Workbench in the rail and choose a Salesforce org at the top right.
You should see The org's name and type appear, with a badge reading read-only.
Look at the box. It starts with a sample: SELECT Id, Name, CreatedDate FROM Account ORDER BY CreatedDate DESC LIMIT 25. Change it, or replace it with your own SELECT query.
Press Run, or press Ctrl and Enter together (Command and Enter on a Mac).
You should see A line above the table says how many rows came back, how long it took, and how many Salesforce API calls the org has left today.
Click a column heading to sort by it. Click again to reverse, and a third time to put the rows back in the order Salesforce gave them.
Before the first run, the empty page offers example queries you can start from: the newest accounts, a count of contacts, open opportunities, and two that read setup data (Apex classes and validation rules). Picking one fills the box; it does not run until you press Run.
The query box colours keywords, text values, numbers and dates as you type. It is a plain text box: nothing is changed in your text, and a pasted query keeps its line breaks.
Keys and buttons
Do this
To
Ctrl or Command + Enter
Run the query, or only the part of the text you have selected.
Ctrl + Space (or Alt + /)
Suggest names at the caret: the fields of the object the query reads, or object names right after FROM. Arrow keys choose, Enter or Tab takes one, Escape closes the list.
Ctrl or Command + Shift + S
Save the query with a name.
Stop (while it runs)
Stop waiting. Salesforce may still finish the query, but nothing is shown.
Rows
Choose how many rows to fetch: 100, 200, 500, 1,000 or 2,000. The default is 200.
Setup data
Query setup data such as Apex classes, flows and validation rules, which Salesforce answers through its Tooling API.
The row number at the left of a row
Open that row as a list of its fields, which is easier to read when a row is wide. Press Escape to close it.
Filter rows
Keep only the rows that have your text in any cell. Copy and Download CSV then use the rows you see.
Copy
Copy the rows as tab-separated text to paste into a spreadsheet.
Download CSV
Save the rows as a CSV file named after the object and the time.
Drag a column's right edge, or focus it and press the left or right arrow
Make the column narrower or wider.
ADVISORY · What a result is
Everything in the table is text, even if it looks like a web address or like code. A value that starts with an equals sign is written to a CSV file with a leading apostrophe, so a spreadsheet shows it as text instead of running it as a formula.
History and Saved. Beside the box, History keeps your last 50 queries (the text of the query, whether it worked, how many rows, and the org). Running the same query again refreshes its line instead of adding another. Click one to put it back in the box; it does not run until you press Run. Saved holds up to 100 queries you named. Both are yours alone, and both are removed when you delete your account. Neither ever holds the rows a query returned.
What it will not run. One SELECT at a time. A second statement after a semicolon, FOR UPDATE, and any query with a write word such as INSERT, UPDATE or DELETE are refused with a sentence saying why, before anything is sent to Salesforce.
13.2 Browse objects and fields
Choose the Objects tab. Type in the search box to find an object by its name or its label. Tick Custom objects only to keep the ones your team added.
You should see The list shows the objects your Salesforce user can read, and how many match.
Click an object.
You should see Its name, label and field count appear, with three tabs: Fields, Relationships and Record types.
In Fields, search by name, label or type, then press Add beside a field.
You should see You are taken back to the Query tab with the field added to your query's field list, and the cursor is in the box.
Add puts the field in the SELECT list of a query that already reads that object. If your query reads another object, or the box is empty, it starts a new query on this object.
A lookup field also shows a second button with the parent's name, for example Owner.Name, so you can bring the parent's value into the same row.
In Relationships, Add subquery adds the children of the object, for example (SELECT Id FROM Contacts), to the field list.
A picklist field shows how many values it has. Press the number to list them (inactive values are struck through) and Copy values to copy them, one per line. A very long picklist shows its first 200.
Query this object starts a fresh query on the object you are looking at.
Each object you open costs one Salesforce API call, and it is kept while the page is open, so going back to it costs nothing more.
[Screenshot: The Workbench Objects tab with an object open]Figure 41
Figure 41. The Workbench Objects tab with an object open. Capture details are item 41 in the list of screenshots to capture. Call-outs to draw: 1 Search objects; 2 Custom objects only; 3 Fields, Relationships, Record types; 4 Add button.
13.3 Read the org's setup data
The Metadata tab lists what has been built in the org, without writing a query. Pick a kind on the left: Apex classes, Apex triggers, flows, validation rules, custom objects, custom fields, Lightning web components, installed packages, record types, permission sets or profiles. The list appears in the same grid as a query result, so you can sort it, filter it, open a row as a list, copy it or download it as CSV.
Each kind is a plain read-only query. The code and automation ones read through Salesforce's Tooling API, the same as the Setup data switch on the Query tab.
Open in Query puts that query in the Query tab's box so you can change it, for example to add a WHERE clause.
A list is kept while the page is open, so going back to a kind does not read it again. Refresh reads it again.
Up to 2,000 rows are read for each kind. If an org has more, the page says the list was cut.
ADVISORY
Your Salesforce user needs View Setup and Configuration for the Setup lists. Without it Salesforce refuses, and the page says your user is not allowed to read that. Ask an administrator, or use a different connection.
13.4 Watch the org's limits
The Limits tab reads the org's limits in one call and shows each as a gauge: how much is used, how much is left, and the share used. The ones closest to their maximum come first. A gauge is green below 70 percent, amber from 70, and red from 90. Limits the org gives no maximum for are left out. Use the search box to find one, for example API or storage, and Refresh to read them again.
ADVISORY
The daily API request limit is shared by everything that uses the org, including Cockpit. If it is amber or red, avoid large queries until it resets.
13.5 MuleSoft deployments and APIs
The MuleSoft tab reads from Anypoint with the connected app you set up in chapter 6. Choose the connection and the environment. A production environment shows a note that the page only reads.
Above the tables, tiles show the organisation's name, its subscription and the vCores assigned to Production, Sandbox and Design. These are what Anypoint reports as assigned, not what is in use. A tile is left out when Anypoint does not report it.
Deployments lists each application with its state: Failing, Starting, Running or Stopped. The ones that need a look come first, and a row of counts above the table gives the totals. Hover a state to see Anypoint's own status words. The table also shows the runtime version, the replicas and vCores, the artifact and when it last changed, where Anypoint reports them.
APIs lists the API instances managed in the environment: the API and its instance name, version, status, active contracts and endpoint. Press Policies on a row to see the policies applied to that API, in order.
CAUTION · Policy settings are not shown
A policy's settings can hold keys and credentials. The Workbench shows the policy's name and order, and the names of its settings, never their values.
If a value is missing from a row, Anypoint did not report it for that application, and the Workbench leaves it blank instead of guessing.
[Screenshot: The Workbench MuleSoft tab with deployments]Figure 42
Figure 42. The Workbench MuleSoft tab with deployments. Capture details are item 42 in the list of screenshots to capture. Call-outs to draw: 1 Connection and Environment; 2 State counts; 3 State of a deployment; 4 APIs tab.
13.6 What it reads, what it records, and the limits
Question
Answer
Can it change my org?
No. Every call it makes to Salesforce and to Anypoint is a read. The query guard refuses anything but one SELECT.
Which orgs can I use?
Only your own connected orgs and MuleSoft connections. Another person's cannot be reached, even by a guessed id.
What is recorded?
An audit event for each query with the connection, the object name, how many rows came back and how long it took. The text of your query and the rows are not in it. Your History holds the text of your own queries and nothing else.
Does a query use my org's API allowance?
Yes: one call for each page of up to 2,000 rows, plus one for each object you open. The line above the results shows what is left today.
How big can a result be?
Up to 2,000 rows, and about 4 MB. A cut result says so above the table.
How long may a query take?
25 seconds. A slower query stops with a sentence suggesting a filter or a LIMIT.
How often may I run queries?
Up to 30 a minute. After that the page asks you to wait a few seconds.
ADVISORY · Production orgs
A Production org is marked in amber because it is the one your customers use. The Workbench cannot change it, but a very large query still spends that org's daily API allowance, which is shared with everything else that uses it.
13.7 When something goes wrong
You see
What it means
What to do
Write a SELECT query first
The box is empty, or the text does not start with SELECT.
Write one SELECT query.
Only one query at a time
There is a semicolon and more text after it.
Remove the semicolon and anything after it.
A message in Salesforce's own words, such as an unexpected token
Salesforce read the query and did not understand it.
Fix the query. The message names the part it stopped at.
Cockpit lost the sign-in to this connection
The saved sign-in for that org or MuleSoft connection no longer works.
Press Reconnect in the message, or use Connectors.
This Salesforce org has used up its daily API allowance
Salesforce refused the call because the org's limit for the day is spent.
Wait for the limit to reset, or use another org.
Your user on that connection is not allowed to read this
The connected user has no access to that object or area.
Ask an administrator for the access, or try another connection.
The query took longer than 25 seconds
Salesforce did not answer in time.
Add a filter or a LIMIT, and run it again.
That is a lot of requests
You ran more than 30 queries in a minute.
Wait a few seconds.
Write a search that starts with FIND
The Search tab got text that is not a FIND search (for example a SELECT).
Start with FIND {your words}, or run a SELECT in the Query tab.
This application has no log yet
Anypoint has not given the application a version to read logs from, usually because it is still starting.
Try again in a minute.
Connect a Salesforce org to start
No org is connected to your account.
Press Connect an org and follow the guide in chapter 6.
If a message is not in this table, or the page shows a reference that starts with CKP, send it to support and say what you were doing.
13.8 Search, charts, logs and shortcuts
ARRIVING · Switched on separately
Everything in this section is a second wave that is switched on on its own, after the Workbench itself. If you do not see a Search tab and a Logs tab, your environment does not have it yet. The Workbench in sections 13.1 to 13.7 works without it.
These additions read exactly as the rest of the Workbench does: every call is a read, only your own connected orgs and MuleSoft connections can be reached, and nothing you do here is sent to an AI model on its own (rows and logs reach the Copilot only when you choose to send them).
Search (SOSL). The Search tab finds a word across many objects at once. Write a search that starts with FIND and the words in curly braces, for example FIND {Acme} IN ALL FIELDS RETURNING Account(Id, Name), Contact(Id, Name, Email), and press Search (or Ctrl or Command and Enter). The rows from every object share one grid, and the first column, SObject, says which object each row belongs to. Sort, filter, copy and download CSV work as they do for a query. Your last searches appear in History beside the box; click one to put it back in the box. If you paste a FIND into the Query tab and press Run, the Workbench moves it to the Search tab for you.
[Screenshot: The Workbench Search tab with matches from two objects]Figure 43
Figure 43. The Workbench Search tab with matches from two objects. Capture details are item 43 in the list of screenshots to capture. Call-outs to draw: 1 Search box; 2 SObject column; 3 Download CSV; 4 History.
Charts. When a query result has a column of numbers, a Table and Chart switch appears above it. A query with COUNT(), SUM() or AVG() and a GROUP BY is the usual case. Pick Bars or Line, and choose which column is the label and which is the number. Bars are sorted with the largest first, unless the labels are years or months, which keep the order of the query. A chart shows at most 40 bars or 200 points and says when it left some out. For a screen reader the chart has a one-sentence summary, and under it a list called The numbers behind the chart gives every value as a table.
[Screenshot: The Workbench result chart of a GROUP BY query]Figure 44
Figure 44. The Workbench result chart of a GROUP BY query. Capture details are item 44 in the list of screenshots to capture. Call-outs to draw: 1 Table and Chart switch; 2 Bars and Line; 3 Label and Number lists; 4 The numbers behind the chart.
Apex logs. The Logs tab lists the newest debug logs in the org (who, what, when, how big, how long). Press Open on one to read it as numbered lines. Use Show to keep only errors, warnings or other levels, and the search box to find a word; press More lines for the next page and Older logs for the next page of the list. Cockpit works out each line's level from its event name (for example EXCEPTION_THROWN is an error, USER_DEBUG uses the level written in the line), so it is a good way to find the errors, but it is not Salesforce's own logging setting. Cockpit only reads logs: it does not turn trace flags on or off, and it does not delete a log. If the list is empty, no trace flag is on in Setup.
CAUTION · A log can hold record values
A debug log can contain the values of the records the code touched. Cockpit shows the log text only to you, as plain text, and does not store it, but do not paste it into a ticket without looking first.
[Screenshot: The Workbench Logs tab with one Apex log open]Figure 45
Figure 45. The Workbench Logs tab with one Apex log open. Capture details are item 45 in the list of screenshots to capture. Call-outs to draw: 1 Show list; 2 Search the log; 3 Line count; 4 More lines.
MuleSoft details and logs. In the Deployments table, Details opens one application: Anypoint's status words, the state it wants, the runtime, the size, the artifact, when it last changed, the last version that worked, each replica with its state, and its public address. Logs opens its newest log lines (50, 100 or 200) for a period you choose, with a level list and a search box. Lines are written by the application, so they are shown as plain text and anything that looks like a secret is hidden. Anypoint keeps the log by version, so an application that has not started yet answers that it has no log yet.
ADVISORY · CPU and memory use are not here
The Workbench does not show how much CPU or memory an application is using (the Runtime config view shows the limits it is set to). The Metrics view under Operations in the MuleSoft tab shows its messages, errors, error rate and response time, and an API's requests by status group. Alerts are not read yet: that view says they could not be read, and never that none is firing.
[Screenshot: The Workbench MuleSoft tab with an application's logs open]Figure 46
Figure 46. The Workbench MuleSoft tab with an application's logs open. Capture details are item 46 in the list of screenshots to capture. Call-outs to draw: 1 Details and Logs; 2 Period; 3 Search these lines.
Saved query folders. When you save a query, the optional Folder box files it under that name; the Saved list then shows the queries grouped by folder, folders A to Z. A folder is just the first part of the saved name, written Folder / Name, so you can also rename by saving again with a new name.
Keyboard shortcuts
Press
To
Alt + 1 to 9
Go to the first, second, third… tab.
/
Jump to the filter or search box of the tab you are on.
?
Show or hide the list of shortcuts (also the Keyboard shortcuts button). Escape closes it.
Ctrl or Command + Enter
Run the query or the search.
Limits of the second wave
Question
Answer
How many search rows?
Up to 2,000 and about 4 MB, like a query. Salesforce does not page a search, so put a LIMIT in it for fewer.
How many logs, and how long may one be?
50 logs at a time (up to 200). A log is read up to about 5 MB and shown 300 lines at a time (up to 1,000); a line over 2,000 characters is shortened.
How many MuleSoft log lines?
At most 200 of the newest, from the last 15 minutes up to 24 hours. Anypoint's read does not page back further.
How often?
Up to 30 searches a minute and 20 log reads a minute. After that the page asks you to wait.
What is recorded?
An audit event with the connection, counts and a log id, never the search text, a log line or a row. Your History holds the text of your own searches, like queries.
13.9 Links and Open in Workbench
Every Workbench view has an address. The address follows the tab and the org you are on, so a reload comes back to the same place, and Copy link to this view copies it (on the Query tab it includes the SELECT in the box). Opening a link puts the query in the box and picks the tab; it never runs anything, so you press Run yourself.
In a chat, the Brain panel lists each tool the Copilot used. A step that has a Workbench panel (a Salesforce or Tooling query, a describe, a MuleSoft deployment status or log read) carries an Open in Workbench link that opens the same read on the same org. The link holds only the query text and identifiers, never a row, a log line or a token.
The org you pick in the Workbench is remembered as the one you are working in, and the chat uses the same choice. A link that names an org, object or deployment you do not have opens nothing for it. The search box (Ctrl K) lists each Workbench view that is on for you, for example Workbench: Logs, and opens it.
13.10 The GitHub tab
ARRIVING · Switched on separately
The GitHub tab is switched on on its own, after the Workbench itself and only where GitHub is connected. If you do not see it, your environment does not have it yet.
The GitHub tab reads one repository at a time, with your own GitHub sign-in: Pull requests (the list, then one with its checks, reviews and the diff of every changed file), Actions (runs, the jobs of one, and the end of a failed job's log, or just its error lines), Issues, Files (browse folders and read a file) and Search (code, issues, pull requests and commits). Type the repository as owner/name, or pick one from your own list.
It only reads. Nothing on this tab changes GitHub and nothing is sent to the Copilot. Everything GitHub sends is shown as text: a title that looks like a web page or a formula is shown as the characters it is. Secret-looking values in logs and files are hidden and counted, the values in .env files are always hidden, and key, certificate and binary files are not shown. A link to GitHub appears only when it really is a github.com address.
Each read is limited in rows and size, and you can make 20 to 60 a minute depending on the kind (searches and files are the fewest). The audit trail records the repository and the kind of read, never the path, the search text or what was read.
13.14 What the Copilot knows about the panel you have open
When this is switched on, the Copilot is told, in the short list of facts it gets with every message, which Workbench panel you have open and which of your connections (or which GitHub repository) it is on, for example: the Query panel on your Dev org. That is only the name of the panel and its connection. The Copilot cannot see what the panel shows: not a row, a log line, a file name or a query. If it needs something from the panel it asks you, and you decide whether to send it with Send to Copilot (13.12), after reading exactly what would be sent.
The note is replaced each time you change panel or org, is forgotten when you leave the Workbench or hide the page, and is not told to the Copilot after 15 minutes. It belongs to you, not to one chat, so any of your chats (and a scheduled run) can be told it while it is fresh. Only the panels your team's Captain has given you are ever named.
13.15 Access, audit and MuleSoft operations
When this is switched on, the Workbench has an Access and audit tab for your Salesforce org and an Operations view inside the MuleSoft tab. Each view is one of the Copilot's own read tools with a form in front of it: the same checks, the same hidden secrets and the same limits, on your own connection. Nothing on these pages changes anything, and nothing you read is sent to the Copilot unless you say so in a chat.
What each view answers
View
What it answers
Who can access
Which users can read, create, edit or delete an object or a field, or what one user can do with an object, a field or one record, worked out from profiles, permission sets and sharing.
Permission audit
Who holds high-risk permissions such as Modify All Data, what differs between two permission sets or profiles, and which licensed users have not logged in for a number of days.
Audit trail
Logins (who, when, from where), changes made in Setup, or the history of one field on one record. Salesforce keeps this for 180 days.
Exchange
A search of your organisation's Anypoint Exchange, or one asset in detail: versions, dependencies, files, tags and who published it.
Runtime config
One application's runtime settings, or what differs between two deployments of it, or between two different applications. Values that look like secrets are hidden.
Metrics
An application's messages, errors, error rate and response time, or an API's requests by status group with its error rate and response time. Not CPU or memory use. Alerts are not read yet: the panel says they could not be read, never that none is firing.
Capacity
What each environment is estimated to use of your vCores, whether a trial is running out, and whether a deploy you are thinking about would fit.
API Manager
One API in full, its SLA tiers, its alert rules (not whether they fired), the client applications that hold a contract on it, and the organisation's applications.
A form is sent only when it is complete: the page names a missing field, and a number, date or name that does not look right, before anything is sent. A field that does not apply to your question is not shown and not sent. Environments, applications and APIs are picked from lists read from your own connection. The answer is always shown as text, as a table, a list or a set of facts, and a line above it says how many reads it took and how many secret-looking values were hidden. A view your account does not have yet says so.
Limits: each view allows a few reads a minute (10 to 30, and 60 in all across these views), so the page asks you to wait if you go faster. The audit event names the view and the kind of question, never a name, an id or a row.
13.13 The Workstation tab
ARRIVING · Switched on separately
The Workstation tab is switched on on its own, after the Workbench itself, and only where the Workstation is switched on. If you do not see it, your environment does not have it yet.
The Workstation tab is a read-only window on your own Workstation. It shows the machine's state and hours, a live Activity trail of what happened to it (starting, ready, stopping, errors), its files (browse folders, read a text file), and the git status and recent commits of a folder. There is no terminal and no editor: nothing here types into a file or runs a command you typed.
The tab never wakes your Workstation for you. When it is asleep the files and the Run menu say so, and the Wake button (with the hours it will use) is the only way to start it. Secret-looking values in files and output are hidden and counted, the values in .env files are always hidden, and key and binary files are not shown.
The Run menu starts one governed command on the machine: build a Mule project, scan Salesforce code, run Lightning web component tests, or run Apex tests in your default Salesforce org (the one your chats use). These change nothing in an org or on GitHub; they write only inside the workspace. One runs at a time (20 an hour), each uses Workstation hours while it works, and the output appears when it finishes. To deploy, run Apex or change a file, ask the Copilot in a chat: the approval card does the write.
13.11 Apex and jobs
ARRIVING · Switched on separately
The Apex and jobs tab is switched on on its own, after the Workbench itself. If you do not see it, your environment does not have it yet.
The Apex and jobs tab reads five things from the chosen org, each a read-only query: Apex code coverage (lines covered per class and trigger, lowest first, with the org-wide figure the way the deploy check counts it), Failing Apex tests and Recent Apex test results, Async Apex jobs (batch, queueable and future jobs, newest first) and Scheduled jobs. Each has an Open in Query tab button, so you can change the query.
Record by Id shows the fields of one record: choose the object, paste the 15 or 18 character Id and press Open record. Its related lists are buttons that open a query for the children of that record in the Query tab; nothing runs until you press Run. Everything the org sends back is shown as text.
Nothing on this tab runs tests, runs Apex or changes a record. To do any of those, ask the Copilot in a chat: it proposes the action and the approval card does the write, with the same guards as always.
13.12 Send to Copilot
ARRIVING · Switched on separately
Send to Copilot is switched on on its own, after the Workbench itself. If you do not see the button, your environment does not have it yet.
The Workbench never sends anything to the Copilot by itself. When you want the Copilot to look at what you are looking at, press Send to Copilot above a table of rows. A window shows you the exact text that would be sent: the rows you see (after your filter, the first 25 rows and 8 columns), with secrets, email addresses, cloud resource names, instance ids and Salesforce record ids replaced by a marker such as [hidden:email], and a count of what was hidden.
Nothing is stored until you press Send to Copilot in that window. Then Cockpit starts a new chat, bound to the same org, whose first message is that text, and opens it. No AI model has been asked anything yet: the Copilot reads the excerpt when you ask your first question in that chat. Cancel, or Escape, sends nothing. The excerpt is marked as data, so text inside it is never treated as an instruction.
You can make 10 sends a minute. The audit trail records the panel, the number of rows, the size and the counts of what was hidden, never a cell or the title.
Chapter 14
The project board
See what the Copilot is working on, what is finished and what is waiting for you, on a board whose cards move by themselves. Beta, switched on for testers.
What the board is
ARRIVING · Beta, switched on for testers
The board is built and is being tried by testers before it is switched on everywhere. If your rail has no Board entry, your environment does not have it yet, and nothing in this chapter can be done until it does.
The board is a page next to the chat that shows your work as cards in four columns. A card stands for a piece of real work, usually one chat. You do not have to keep it up to date: it moves by itself when something real happens in that chat (14.2). You can always move a card yourself.
[Screenshot: The project board with cards in all four columns]Figure 47
Figure 47. The project board with cards in all four columns. Capture details are item 47 in the list of screenshots to capture. Call-outs to draw: 1 Phase boxes; 2 Waiting on you column; 3 A card moved by itself and its reason; 4 Move to list; 5 Add a card box.
The four columns
Column
Means
To do
Not started.
Doing
A run is working on it.
Done
Finished.
Waiting on you
Needs a decision from you: an approval, or a run that failed.
Every card says which phase it belongs to and, when the board moved it, why (for example, "Waiting for your approval"), with the words "moved by itself". A card made from a chat also carries small links: one back to the chat, and one to each approval card or pull request that came out of it. Above the columns a line says how many cards are waiting on you.
ADVISORY
The board is yours alone. Nobody else sees it, including a team's Captain.
14.1 Start and use a board
Start with discovery
Open Board in the rail. With no project yet, press Start with discovery.
You should see A project called "My first project" appears in discovery, with one To do card.
Under the columns, choose a chat in Add a chat to this project.
You should see The chat gets a card. Run something in that chat and watch the card move; the page refreshes by itself every few seconds, so you do not need to reload.
To add a card of your own, type in the Add a card box under To do and press Add.
You should see The card appears in To do.
To take a card off the board, press Remove on it.
You should see The card goes. The chat it came from is not touched.
ADVISORY · On a phone
The columns are stacked, with Waiting on you first. Use the Move to list on a card; there is no dragging on a phone.
14.2 How cards move by themselves
A card in a chat moves only because of something that really happened, and the card says what. Nothing moves because of a guess.
What happened in the chat
The card goes to
The card says
You ran something (a new run started). A finished card is reopened.
Doing
A run started
The Copilot asked for your approval.
Waiting on you
Waiting for your approval
You approved or declined the card.
Doing
You approved, or You declined
The approval ran out (10 minutes).
Doing
The approval expired
The run failed.
Waiting on you
The run failed
You cancelled the run.
To do
The run was cancelled
The run finished.
Done
The run finished
Two things are added to the card without moving it: a link to the approval card, and a link marked "A pull request was opened" when the Copilot opened one for you. A rule only applies to a card in the right column. A card you left in Done is not moved by an approval, for example.
ADVISORY · Your move stays
When you move a card yourself it says "You moved it" and stays where you put it until something real happens in its chat.
14.3 Phases and the gate
A project has three phases, shown as three boxes above the columns. Discovery is finding out what is there and what is in the way. Design is deciding what to build. Develop is building and shipping it. The box for the phase you are in says "now", finished ones say "approved", and later ones say "not yet". A project starts in discovery.
Open the next phase
When you are satisfied with the phase, press the button above the columns, for example Discovery is complete, open Design.
You should see A question: "Move to Design? This is your go-ahead and is recorded."
Press Yes, open Design. To back out, press Not yet.
You should see The Design box says "now" and Discovery says "approved".
[Screenshot: The board's phase confirmation]Figure 48
Figure 48. The board's phase confirmation. Capture details are item 48 in the list of screenshots to capture. Call-outs to draw: 1 Confirmation question; 2 Yes, open Design; 3 Not yet.
That button is the gate. It is your go-ahead and it is recorded. Nothing else moves a phase: not the Copilot, and not a finished run.
Phases go in order: discovery, then design, then develop. You cannot skip one or open one twice. There is no gate button once a project is in develop.
A card you add has the phase the project is in now.
14.4 Move a card by keyboard, menu or mouse
Do this
To
Tab to a card (it is outlined), then press Alt and the right arrow
Move it one column to the right: To do, Doing, Done, Waiting on you. Focus stays on the card.
Alt and the left arrow
Move it one column to the left. At either end it stays put.
The Move to list on a card
Choose any other column. This also works with a screen reader and on a phone.
Drag the card with a mouse
Drop it on another column.
After each move a screen reader says, for example, "Moved Fix the nightly job to Done." If the move did not reach Cockpit, the page shows the reason and puts the card back.
Board checklist
Board checklist
I know the four columns and which one needs me.
I know a card moves only when something real happens, and says why.
I know that I alone open the next phase, with the button and a confirmation.
I can move a card by the Move to list, by Alt and an arrow key, or by dragging.
Appendices
Appendices
The scopes each connector asks for, keyboard and platform notes, how to reach support, and the owner's Admin Health view.
Appendix A: connector scopes
A scope is one specific permission you give to an app. These are what Cockpit asks for or tells you to add, taken from the product. Most providers have no read-only scope for what Cockpit reads, so it is Cockpit's Sandbox mode, enforced on the server, that keeps it to reading.
Connector
Door
Scopes or permissions
Notes
Google
Sign-in
Your name and email only
Signing in never asks for more. Files in Google Drive are a separate connection (Google Drive, where it is offered) that you can disconnect without affecting sign-in.
Salesforce
Your External Client App, authorization code with PKCE
api, refresh_token
Salesforce labels these Manage user data via APIs (api) and Perform requests at any time (refresh_token, offline_access). Add no others. PKCE required.
Add only View and Read scopes. Never Create, Edit, Delete, Deploy or Manage. Choose the environments.
GitHub
Cockpit's GitHub sign-in
read:user, repo
repo is GitHub's standard access to private repositories; GitHub has no read-only version of it.
Slack
Your own Slack app, user token
User scopes: channels:read, groups:read, channels:history, groups:history, search:read, users:read, chat:write
The save-your-app page also lists bot scopes channels:read, chat:write, users:read. chat:write is used only after you approve a post.
Slack (optional step)
A separate consent page
im:read, mpim:read, im:history, mpim:history
Direct messages. Asked for on their own, and you can decline.
Postman
An API key you create
None. The key can do what its owner can do.
Use a dedicated account. Revoke in Postman.
Appendix B: keyboard and platform notes
Where
Key or note
Message box
Enter sends. Shift and Enter start a new line.
Panels, menus and dialogs
Escape closes the mode panel, an open drawer, a menu or a dialog, and returns focus to the control that opened it.
Everywhere
Tab moves through controls in order; the focused control has a visible outline. Tables in this manual are focusable so they can be scrolled with the keyboard.
Layout
Under 900 px wide the Chats and Brain panels become drawers. At 480 px and narrower the rail becomes a bottom bar, and controls are at least 44 px tall.
Desktop apps
Cockpit menu: Command (Mac) or Ctrl (Windows) + N for a new chat, + Shift + C Connections, + Shift + B Workbench, + Shift + A Approvals. Help menu: Cockpit Manual, Check for Updates, Copy Diagnostics (no account details). On Windows, press Alt to show the menu bar. See 5.10.
Workbench
Alt + 1 to 9 for a tab, / for the filter box, ? for the shortcut list, Ctrl or Command + Enter to run. See 13.8.
Project board
Alt and the left or right arrow on a focused card moves it one column. See 14.4.
Mac
Cockpit for Mac, Apple silicon. First open: macOS asks about an app downloaded from the internet; click Open.
Windows
Cockpit for Windows, Windows 10 or 11, 64-bit. Installs for you alone; no administrator password.
Sign-in hand-off
The apps open your browser to sign in and come back through cockpit://.
Microphone
Uses your browser's or phone's own speech recognition; hidden where there is none.
iPhone, Android
Coming. Use the console in a phone browser until then.
Printing this manual
Open the print view, choose Letter or A5 palm, and use Print, Save as PDF. Page numbers come from the browser's page margins, which Chromium-based browsers such as Chrome and Edge draw. The print layout has been checked in Chromium only.
The reference code (CKP-...) if the message showed one.
The step you were on, and what you expected to see.
The address you signed in with (not a password).
A screenshot with no secret, key or password in it.
CAUTION
Never send passwords, Consumer Secrets, client secrets, API keys or one-time codes to anyone, including support. If you sent one by mistake, revoke it at the vendor.
The Health view is a section at the top of the Admin page, which only administrators can open. It appears only on a build where it is switched on. Nobody else sees it, and there is no way to change anything from it.
Sign in as the owner and open Admin in the rail.
You should see A Health section above the Waitlist, reading "Loading health numbers..." and then the numbers. It refreshes by itself every minute.
Read the first line.
You should see It begins OK., Look. or Problem. and says in a sentence why, for example "Nothing unusual in the last 24 hours."
Read the tiles, then the two charts.
[Screenshot: The Health section of the Admin page]Figure 49
Figure 49. The Health section of the Admin page. Capture details are item 49 in the list of screenshots to capture. Call-outs to draw: 1 Verdict line; 2 Tiles; 3 Requests per hour chart; 4 Slowest 5% per hour chart.
Tile or chart
What it shows
Requests
How many calls this server answered in the last 24 hours.
Errors (5xx)
How many failed on Cockpit's side, and their share. Above 5 percent, with at least 20 requests, the first line says Problem.
Slowest 5% (p95)
The time the slowest 5 percent of calls took or more. Above 1 second the first line says Look.
Active runs
Chat runs running or queued now, and how many wait for an approval.
Approvals pending
Approval cards waiting for a decision.
Workstation hosts and cost today
Machines running now, how many exist, the limit, and today's cost against its ceiling. Shows "off" when Workstation is not on.
Requests per hour, Slowest 5% per hour
One bar for each hour, in your time zone. A red bar has a server error, or is above 1 second. Each bar has the number as a tooltip, and a screen reader is given the same numbers as a table.
ADVISORY
The numbers are this one server's own since it started, so they start again after each update. A line under the charts says since when. If the page says "The Health view is switched off on the brain.", the owner's page is ahead of the service; try again later.
Back matter
Screenshots to capture
Real captures come from the product owner's test drive. Capture each exactly as described, with no real customer data on screen, and draw the numbered call-outs.
Salesforce Setup home of a new Developer Edition orgFigure 1Not yet captured
Page
The org's Setup home (gear icon, then Setup), signed in to org 1
State
Quick Find box visible at the top left; browser address bar visible and ending in .salesforce.com; no real data on screen
Call-outs
1 Quick Find search box; 2 Address bar ending in .salesforce.com
The Captain's team members page with one active and one invited personFigure 36Not yet captured
Page
/app/team, signed in as a Captain, on a build with Teams switched on
State
The Invite someone form and two team members visible: one Active with the access lists, one Invited with Send again; use fake addresses such as test.user@example.com
Call-outs
1 Invite someone form; 2 Starting access list; 3 Connector access lists; 4 Save access button; 5 Role list and Change role; 6 Send again; 7 Remove
The team page as a team member sees itFigure 37Not yet captured
Page
/app/team, signed in as a team member (not a Captain)
State
The team name, the line naming the Captain, and the What you can use list with at least one Read only and one Not enabled; fake names and addresses only
Call-outs
1 Team name; 2 Captain line; 3 What you can use; 4 Ask your Captain note
The Workbench with a query and its result rowsFigure 40Not yet captured
Page
/app/workbench, a Salesforce sandbox org chosen
State
The sample query run on a throwaway org; the org badge, the Run button, the result line and at least three rows visible; no real customer data on screen
Call-outs
1 Org picker and read-only badge; 2 Query box; 3 Run button; 4 Result line; 5 Sortable column headings; 6 History and Saved
The Workbench Search tab with matches from two objectsFigure 43Not yet captured
Page
/app/workbench, Search tab, a Salesforce sandbox org chosen
State
The sample FIND search run on a throwaway org; the SObject column and at least three rows visible; the History list beside it; no real customer data on screen
The Workbench result chart of a GROUP BY queryFigure 44Not yet captured
Page
/app/workbench, Query tab, a COUNT() ... GROUP BY query run on a throwaway org, Chart view chosen
State
The Table and Chart switch, the Bars and Line buttons, the Label and Number lists and a bar chart of at least three bars; no real customer data on screen
Call-outs
1 Table and Chart switch; 2 Bars and Line; 3 Label and Number lists; 4 The numbers behind the chart
The project board with cards in all four columnsFigure 47Not yet captured
Page
/app/board, a build with the board switched on, a project in discovery
State
The three phase boxes, the four columns with at least one card each, one card reading moved by itself with its reason line, and the Add a chat to this project list; fake chat titles only
Call-outs
1 Phase boxes; 2 Waiting on you column; 3 A card moved by itself and its reason; 4 Move to list; 5 Add a card box