The safety policy hands off a Shopify order note as "moving money" while refunds pass
Mantenedores costumam responder em até 1 dia
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 48/100
- Tipo de issue
- Bug
- Clareza
- Razoavelmente clara
- Status de atividade
- Ativa
- Stack de tecnologia
- typescript
- Domínio
- authorization, backend-api-design, security
Direção de pesquisa
Start with the payments rule in server/src/approvals/policy.ts and trace how the safety policy evaluates Shopify action names, descriptions, and arguments. Check how SHOPIFY_UPDATE_ORDER and SHOPIFY_CREATE_REFUND are represented and covered by existing tests. Done means notes on an order no longer trigger a money hand-off while refunds do; the proposed administrator allow rule is an additional design question.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
What happens
Writing a note on a Shopify order (SHOPIFY_UPDATE_ORDER with only id and note) is handed off to the person as a money action:
approval.evaluated composio-shopify/SHOPIFY_UPDATE_ORDER
outcome: { behaviour: "hand_off", source: "safety",
reason: "Paying, purchasing or moving money is always done by the person." }
Meanwhile SHOPIFY_CREATE_REFUND, which does move money, passes without a hand-off.
The payments rule in server/src/approvals/policy.ts is a keyword regex (payment|pay|checkout|purchase|place order|... |billing). The order-update action's schema or description very likely matched on a word such as billing (it has a billing_address field), while "refund" is not in the list at all.
Suggested fix
- Classify on what the action does, not on words found anywhere in its schema. At least match against the action's name and the arguments actually sent, not field names that were left empty.
- Add refunds to the money rule (
refund,create_refund), since they move money. - Consider letting an administrator mark a specific action as not money-moving (an allow rule that the safety layer respects), with the decision recorded in the audit log.
- Linguagem predominante
- TypeScript
- Estrelas
- 7.1k
- Forks
- 962
- Merge médio
- 1d 7h
- PRs com merge (30d)
- 143
Preparar o ambiente
- Inclui um Dockerfile ou arquivo Docker Compose
- Tem um modelo de pull request
- Sem guia de contribuição
Primeiros passos
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de CopilotKit/OpenBot
-
Composio plugin sends x-api-key, but connect.composio.dev/mcp requires x-consumer-api-keyTalvez já em andamento @azmi2409 assumiu há 3 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
CopilotKit/OpenBot#817 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Wrong key location at startupTalvez já em andamento @charan-rathore assumiu há 13 dias. Aberta
Dificuldade 1/5 Menos de uma hora Facilidade para iniciantes 68/100
CopilotKit/OpenBot#800 ·
Mantenedores costumam responder em até 1 dia
-
setup-learning.ts fails on Windows with "spawn npx.cmd EINVAL"Talvez já em andamento @Caldas assumiu há 16 dias. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 80/100
CopilotKit/OpenBot#792 ·
Mantenedores costumam responder em até 1 dia
-
حفضAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 10/100
CopilotKit/OpenBot#911 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 35/100
CopilotKit/OpenBot#897 ·
Mantenedores costumam responder em até 1 dia
Todas as issues de CopilotKit/OpenBot
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Northeastern-Electric-Racing/FinishLine#4660 ·
Mantenedores costumam responder em até 2 dias
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 86/100
excaliburjs/Excalibur#3895 ·
Mantenedores costumam responder em até 3 dias
-
infer_audio_type only recognises one MPEG Layer III frame header, so most MP3 files are rejectedTalvez já em andamento @Steve-20-ai assumiu hoje. Aberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 78/100
Mantenedores costumam responder em até 1 dia
-
Earn report crashes with "RangeError: Invalid time value" when a report row has an unparsable timestampTalvez já em andamento @Gurkaran18 assumiu hoje. Abertabug
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
joinmarket-webui/jam#1588 ·
Mantenedores costumam responder em até 3 dias
-
BeOS .json missingAberta
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
mihaip/infinite-mac#475 ·