Yeeted AIYeetedDocumentation

PERMISSIONS GUIDE

Who can do what

A shared Yeeted project has one owner and any number of members, each with a role. When a person works through an AI agent, a second set of limits applies: the permissions that person gave that agent connection. This guide lists what each role can do, where to do it on the dashboard and through your agent, and answers the situations people most often find confusing.

The four roles

What each role can do

Actionowneradmindeveloperread_only
Read code, clone or download it, read logs and statusYesYesYesYes
Edit code on main and on ordinary branches, upload source, revert on main, claim filesYesYesYesNo
Ship a branch to main and deploy to developmentYesYesYesNo
Deploy to production or promote to productionYesYesNoNo
Roll back, save a checkpointYesYesDevelopment onlyNo
Start, edit and ship a production hotfixYesYesNo (can read and preview one)No
Secrets for development only: list, set, replace, deleteYesYesYesNo
Production and shared secrets: set, replace, deleteYesYesNo (sees their names)No
Development databasesYesYesAttach, read schema, query. Not export, snapshot, move, rotate, restore or deleteNo
Production databasesYesYesNo (can see that they exist)No
Custom domains: add, verify, removeYesYesNo (can list them)No (can list them)
Apply project-wide yeeted.yaml settings (WAF, depends_on, repo, custom domains)YesYesCan edit the file; it is applied only by the owner or an adminNo
Invite people, raise or lower rolesYes, any roledeveloper and read_onlyNoNo
Remove peopleAnyone but the ownerdevelopers and read_only membersNoNo
Leave the projectNoYesYesYes
Delete the projectYesNoNoNo

Through an agent, each of these also needs the matching agent permission.

Where to do each thing

On the dashboard, open a shared project from the Projects tab; the project page shows your role next to its name. Through an agent, ask in plain words; the tool names are listed so you can recognise them in your agent's replies.

ActionDashboardAgent (MCP tool)
Read and clone codeProject page: Download source. Projects tab: Sourcesource_read, source_tree, source_search, source_git_token (clone), source_export
Logs and statusLogs & Metrics tab; Services tab, then the servicestatus, logs_query, build_logs, diagnose
Edit code, branches, revertProject page: Upload source (a whole archive). File edits and branches are agent onlysource_edit (with branch for a branch), source_upload, revert
Coordinate with other agentsNot on the dashboardsource_status, source_events, source_claim, source_release, source_task_done
Ship to main, deploy developmentProject page: Deploy, then Cancel in the dialog (it reads "OK = production, Cancel = development"). Services tab: Relaunch on a failed or destroyed serviceship, deploy (development is the default), deploy(branch=...) for a preview, redeploy
Deploy or promote productionProject page: Deploy, then OK in the dialog (builds the stored main for production)promote, deploy(service_type="production")
Roll back, checkpointNot on the dashboardrollback, checkpoint, versions_list
HotfixNot on the dashboardhotfix, then source_edit(branch=...), deploy(branch=...), ship(branch, to="production")
SecretsSecrets tab: pick the project, name, value and environment, then Set secret; Delete on a rowsecrets_list, secrets_set, secrets_delete
DatabasesDatabases tab: Export, Restore, Move, Rotate, Deletedatabase_attach, database_list, database_schema, database_query, database_export, database_snapshot, database_move, database_rotate_password, database_restore, database_delete
Custom domainsDomains tab: Add domain, Verify, Remove. Service page, Custom domains: Save domaindomains_list, domain_set, domain_verify, domain_remove
Project-wide yeeted.yaml settingsThe settings question on Deploy (see below). Project page: Link GitHub repo or Edit repo linkapply_settings=true on deploy, redeploy, ship or promote
Invite, change roles, removeProject page, Members: email, role, Invite; the role list on a member's row; Remove; under Open invitations, Confirm and Withdrawproject_share (asks only), project_members, project_unshare
Accept or decline an invitationInvitations tab: Accept, DeclineAgents cannot. invites lists what is waiting
Leave a projectProject page, Members: Leave on your own rowproject_unshare with your own email (needs Share projects)
Delete the projectServices tab: Delete (stored code is kept for 30 days)project_delete
Choose what an agent may doConnect agent tab, Connected agents: Permissions, tick, Save permissions. OAuth credentials for CI and scripts have the same buttonwhoami shows what the connection holds; agents cannot change it

Agent permissions and roles together

An agent acts as the person who connected it. Each connection carries the permissions that person chose for it, on the permissions step when it first connects or later on the Connect agent tab. An agent can do something only when both allow it: the person's role on the project and the connection's permissions. Neither one widens the other. On the dashboard, signed in yourself, only your role applies.

PermissionWhat it covers
Deploy appsdeploy, redeploy, promote, rollback, checkpoints, smoke tests
Read logsbuild and app logs, diagnosis, health
Manage secretslisting secret names, setting secrets
Manage databasesattach, query, export, snapshot, move, rotate, replicate
Manage domainsadding, verifying and listing custom domains
Read and change source codereading, cloning, editing and uploading code, branches, hotfixes, revert, claims
Share projectsasking to share, listing members, removing people
Delete projects, databases, secrets; restore databases; remove domainseach destructive action separately. These are never ticked for a new connection

Shipping a branch needs both Deploy apps and Read and change source code. Deleting a project also needs Delete databases and Delete secrets, because it removes them. A tool whose permission the connection lacks is hidden from the agent, and asking for it anyway is refused. A tool the connection holds is listed whatever your role on a given project is; your role is checked when the agent uses it. Each person chooses permissions for their own connections: a project's owner does not set them for a member's agent.

Worked examples

Inviting people

Sharing needs two people to agree: someone who may grant the access, and the person receiving it.

Main, branches, production and hotfixes

Project-wide settings in yeeted.yaml

Most of yeeted.yaml describes the app, but four settings belong to the whole project: waf, depends_on, repo and the custom domain of each environment. A developer may edit these lines, but only the owner or an admin applies them. When a deploy uses code Yeeted already stores (a deploy by commit, redeploy, ship, promote, or the dashboard's Deploy and Relaunch) and that code's yeeted.yaml differs from what the project runs with, the difference is held:

source_blame on yeeted.yaml shows who wrote each line. To drop a held change, change yeeted.yaml back.

Secrets, databases and what development code sees

A secret is shared (used by both environments) or set for development or production only; one set for an environment overrides the shared value there. Nobody can read a secret's value back, owner included; only the running app receives it. A developer may set and delete development-only secrets and sees the names of all of them.

A developer's code runs in development with everything development has: secrets shared with both environments, the development copy of production data where your plan makes one, and your other development services. Give developer access only to people you would trust with that.

Edge cases

Why did my deploy skip my yeeted.yaml changes?

If you are a developer, project-wide settings (WAF, depends_on, repo, custom domains) are applied only by the owner or an admin; your code deployed without them. If you are the owner or an admin deploying through an agent, they were held because your client could not ask you, nobody answered in time, or you chose to keep the current settings: repeat the call with apply_settings=true to apply them. A yeeted.yaml that does not validate applies nothing, and custom domains also need the agent's Manage domains permission.

Why was my promote refused?

The reply says which case it is. What you are promoting is older than production (it lacks a fix production runs): to go back to an earlier version use rollback, otherwise deploy main to development and promote that. A shipped hotfix has not reached main yet because of a conflict: resolve it with source_edit(branch=<hotfix>, merge_main=true), ship it, then promote. There is no development build yet: deploy development first. Your role is developer or read_only: ask the owner or an admin.

Why was my hotfix refused?

The branch did not start from prod, it changes schema files, it lacks something production already runs, it carries commits merged in from main, or its tip has no tested preview. Start a fresh hotfix from prod for the first three, have the owner or an admin ship it into main for the fourth, and run deploy(branch=...) for the last.

Why can't my developer edit the hotfix branch?

A hotfix goes to production, so starting, editing and shipping one is for the owner and admins, even shipping it to main. Your developer can read it and deploy its preview, and can make the same fix on main or an ordinary branch.

My invitation says it is waiting for confirmation.

It was requested through an agent. The project's owner or an admin opens the project's Members panel and clicks Confirm. Only then is the invited person emailed.

The person I invited sees nothing on their Invitations tab.

It may still need confirmation, it may have expired (7 days from when it was first made) or been withdrawn, or they are signed in with a different email address than the one invited.

I was raised to admin but nothing changed.

A higher role is an invitation. Open the Invitations tab and click Accept. Only the owner can offer admin.

Accepting says the person who invited me can no longer grant this.

Their own role was lowered or they left, so the invitation was withdrawn. Ask the project's owner to invite you again.

Who pays for a shared project?

The owner. Members' deploys and databases count against the owner's plan and its limits, and a member needs no plan.

What happens when the owner deletes the project?

Its deployments stop, its databases and secrets are removed, and open invitations are withdrawn. Its stored code is kept for 30 days. Admins cannot delete a project.

Can an agent accept or confirm an invitation?

No. Confirming and accepting are done by people on the dashboard, whatever permissions the agent holds.

What does a developer's code see in development?

Everything development has: development-only and shared secrets, development databases, the development copy of production data where your plan makes one, and your other development services. See above.

Why does project_context not show secrets?

The connection may lack Manage secrets (the reply names the sections it left out), your role may be read_only, or the project has none. Databases, stored source and domains follow the same rule with their own permissions.

My agent lists deploy but says my role can't change production.

Which tools an agent sees follows the connection's permissions; whether a call succeeds also follows your role on that project. A developer deploys to development; production is for the owner and admins.

I clicked OK on the Deploy question and was told I don't have permission.

OK means production. As a developer, click Cancel to deploy development.

Setting a secret as a developer says insufficient permissions.

Choose development as its environment. Shared and production secrets are for the owner and admins.

My developer's agent deploy did not bring up the projects in depends_on.

Dependencies are project-wide settings, so a developer's deploy through an agent deploys only the project itself. Deploy each dependency, or ask the owner or an admin.

deploy_group refuses a project shared with me.

A group deploy runs as your own account, so it is refused on projects you do not own. Deploy each service with deploy.

A rollback to a checkpoint restored code but not data.

Restoring a database replaces data, so it needs the connection's Restore databases permission. Without it a checkpoint rollback restores code only.

Can an admin make someone else an admin or remove an admin?

No. Only the owner grants admin and changes or removes an admin. An admin manages developers and read_only members.

Two agents are editing the same files.

Claims are advisory and never block an edit. Check source_status before starting; each edit names the version of the file it read, so an edit made on a stale copy is refused with the current content instead of overwriting.

Continue

Read the full Yeeted documentation, or the preview and production guide.